- ステータス
- 解決済み
- 報告対象
- WPML SEO 2.2.4
- 解決されたバージョン
- 2.2.5
- 関連するプラグイン/テーマ
- Rank Math SEO
- トピックタグ
- Compatibility
問題の概要
WPML SEOとRank MathまたはYoast SEOを使用している場合、サイトマップのソースコード内の代替リンクが、期待される言語ルートURL(例: /es/)ではなく、内部パーマリンク(例: /es/home/)を使用した翻訳済みのホームページURLを誤って表示する場合があります。これによりフロントエンドの表示が影響を受けることはなく、カノニカルリンクとhreflangリンクは正しく表示されます。
回避策
続行する前に、必ずサイトの完全なバックアップを取得してください。
- …/wp-content/plugins/wp-seo-multilingual/classes/Shared/Sitemap/BaseAlternateLangHooks.phpファイルを開きます。
- 61行目を探します。
- 変更前:
$link[ self::KEY ][ $lang ] = apply_filters( 'wpml_permalink', $link['loc'], $lang );
- 変更後:
$link[ self::KEY ][ $lang ] = apply_filters( 'wpml_permalink', $link['loc'], $lang, true );
- 89行目でも同じ操作を繰り返します。
- 変更前:
return apply_filters( 'wpml_permalink', $getPermalink( $id ), $language );
- 変更後:
return apply_filters( 'wpml_permalink', $getPermalink( $id ), $language, true );
これらの変更を適用した後、サイトマップを再構築する必要があります。
- Rank Mathの場合: 「Rank Math > Sitemap Settings」に移動し、「Links per sitemap」の値を変更して設定を保存します(後でお好みの値に戻すことができます)。
- Yoast SEOの場合: サイトマップを再生成するには、こちらのチュートリアルに従ってください。