Shifterを利用したサイト制作案件で導入した WordPressのSEOプラグイン「All in One SEO」から出力されるmeta情報や構造化データ内のドメインを固定のものにする必要がありましたので、以下のドメインを置換するカスタマイズを追加しました。
canonicalのドメイン置換
/**
* All in One SEO カスタマイズ
* ドメイン置換対応:canonical
*/
function custom_aioseo_canonical_url($canonical_url)
{
// URLの解析
$parsedUrl = parse_url($canonical_url);
// 新しいドメイン
$newDomain = "example.com";
// ドメインを置換して新しいURLを構築
$canonical_url = "https://" . $newDomain . $parsedUrl['path'];
//
return $canonical_url;
}
add_filter('aioseo_canonical_url', 'custom_aioseo_canonical_url');
構造化データ内のドメイン置換
/**
* All in One SEO カスタマイズ
* ドメイン置換対応:schema
*/
function custom_replace_domain_in_array(&$item, $key, $new_domain)
{
if (is_string($item)) {
// 正規表現を使用してドメインを新しいものに置換
$item = preg_replace('/https?:\/\/[^\/\s]+/', $new_domain, $item);
} elseif (is_array($item)) {
// 配列の場合、配列内の各要素に対して同様の処理を再帰的に適用
array_walk_recursive($item, 'custom_replace_domain_in_array', $new_domain);
}
}
function custom_update_schema_with_new_domain($schema, $new_domain)
{
// 配列内の各要素に対してドメイン置換関数を適用
array_walk_recursive($schema, 'custom_replace_domain_in_array', $new_domain);
return $schema;
}
// 新しいドメインを設定
$new_domain = 'https://example.com';
// aioseo_schema_output フックにカスタム関数を追加
add_filter('aioseo_schema_output', function ($schema) use ($new_domain) {
return custom_update_schema_with_new_domain($schema, $new_domain);
});
動作環境情報
"エックスサーバー" スタンダード(旧X10) "PHP" 8.0.30 "MariaDB" 10.5 "WordPress" 6.4.1 "Shifter" Tier 1
コメント