All in One SEO | 出力されるmeta情報や構造化データ内のドメインを別のドメイン情報に置換する方法

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

コメント

タイトルとURLをコピーしました