CDNでWordPress利用の際の、パス置換設定

WordPressをCDN運用する際に、
「WordPressアドレス」→ オリジンサーバーのURL
「サイトアドレス」→ CDNのURL
とした場合、

公開URLの諸々のパスが、オリジンサーバーを向いてしまう問題が発生することがあります。

functions.php に追記し、URLを置換する記述。

「wp_head」と「wp_footer」を対象。

/**
 * wp_headとwp_footerの出力URLを置換
 */

// 開始処理
$reverse_cdn_start = function() {
  ob_start(function($payload) {
    // 置換前のURL
    $search = 'https://オリジンサーバのURL';
    // 置換後のURL
    $replace = 'https://CDNの公開URL';
    return str_replace($search, $replace, $payload);
  });
};
// 終了処理
$reverse_cdn_end = function() {
  if (ob_get_level() > 0) {
    ob_end_flush();
  }
};

// wp_head に適用
add_action('wp_head', $reverse_cdn_start, 0);
add_action('wp_head', $reverse_cdn_end, 999);

// wp_footer に適用
add_action('wp_footer', $reverse_cdn_start, 0);
add_action('wp_footer', $reverse_cdn_end, 999);

アップロードファイルのディレクトリ変更。
※設定以降にアップロード先のディレクトリを変更するもので、
既にアップロードされているURLを置換するには、別の方法が必要です。

/**
 * アップロードディレクトリのURLを置換
 */

add_filter('upload_dir', function($uploads) {
  // 変換元のURL
  $search = 'https://オリジンサーバのURL';
  // 変換後のURL
  $replace = 'https://CDNの公開URL';

  // url と baseurl の両方を置換
  $uploads['url'] = str_replace($search, $replace, $uploads['url']);
  $uploads['baseurl'] = str_replace($search, $replace, $uploads['baseurl']);

  return $uploads;
});

 

 

MauticのフォームにCloudflare Turnstileを導入する

【事前準備】Cloudflareにて、Turnstileウィジェットを追加

「サイトキー」と「シークレットキー」を取得します。

 

プラグインの追加

Mautic Community Forumsの情報で、GitHubにプラグインがあるとのことで、使わせてもらいます。

FireMultimedia/mautic-multi-captcha-bundle: This plugin brings Google’s reCAPTCHA, hCaptcha, and Cloudflare Turnstile integration to Mautic 5, 6 & 7.

 

フォルダ名を「MauticMultiCaptchaBundle」にリネームし、
(そのままでは認識されなかった。)
plugins フォルダに格納。

 

キャッシュクリア

php bin/console cache:clear

 

プラグイン管理に表示されました。

 

プラグインの設定で、取得しておいた「サイトキー」と「シークレットキー」を入力します。

 

フォームにフィールドを追加

「Cloudflare Turnstile」というフィールドが選択できるようになりました。

 

フィールドのプロパティで「Explicit consent 」を外すと、
「Allow Cloudflare to verify you’re not a robot using Turnstile」というメッセージが消えます。

※ Translations > en_US > massages.ini ファイルを編集すれば、日本語表示させることもできました。
(本来は日本語翻訳ファイルを作成すべきかと。)

 

設置完了。

 

さくらのウェブアクセラレーターを利用する

公式の手順通りに進めば、特に迷うことなく設定できると思います。
Let’s Encryptもボタンを押すだけで有効化できました。
さくらのウェブアクセラレータの利用手順 | さくらのクラウド マニュアル

● オリジンサーバを用意する
● コントロールパネルからサイト追加
● CNAMEレコードを設定
で、サクッと完了。

これで、5円/1GiB (税込)。

問題はオリジンサーバをどうするかという点で、
IP制限をかけられるなら、こんな感じ。
※2025年12月時点の情報です。

# さくらウェブアクセラレーター
allow 133.167.4.0/24;
allow 133.167.5.0/24;
allow 153.121.0.0/24;
allow 153.121.4.0/24;
allow 59.106.229.64/27;

【予告】さくらのウェブアクセラレータ システム増強に伴うオリジンサーバへのアクセス元IPアドレス追加のお知らせ | さくらのクラウドニュース