WPML

WPML 3.9では、他の言語でページを表示する際に、元の言語のコンテンツを表示する機能が導入されました。バージョン3.9以前にサイトでコンテンツの複製に依存していた場合、この新しい翻訳モードを使用する前に、サイトからすべての重複コンテンツを削除することをお勧めします。

このチュートリアルの使用方法

このページで提供されている手順は、データベースから設定とコンテンツを削除します。内容を完全に理解している場合のみ続行し、必ずサイトのデータベースの完全なバックアップを作成してから開始してください

提供されているSQLクエリを使用するには、それらを編集する必要があります。
  • XXXXを、重複コンテンツを削除する投稿タイプ(例:「post」、「product」、「page」)に置き換えます。
  • YYYYを、サイトのデフォルト言語コード(例:「en」)に置き換えます。
  • wp_を、wp-config.phpファイル内の$table_prefix変数を使用して設定されたテーブル接頭辞に置き換えます(デフォルトはwp_です)。

最後に、SQLデータベースを操作するためのツール(例:phpMyAdmin)のいずれかを使用して、これらのクエリを実行する必要があります。

1. 重複コンテンツの削除

wp_postsからの重複コンテンツの削除
DELETE FROM wp_posts
WHERE post_type = 'XXXX' AND ID IN (
  SELECT pm.post_id
  FROM wp_postmeta pm
    JOIN wp_icl_translations t ON t.element_id = pm.meta_value
  WHERE pm.meta_key = '_icl_lang_duplicate_of' AND pm.meta_value > 0 AND
    t.element_type LIKE 'post_%' AND t.language_code = 'YYYY'
)

2. 翻訳設定の削除

wp_icl_translationsからの翻訳設定の削除
DELETE FROM wp_icl_translations
WHERE element_type = 'post_XXXX' AND element_id IN (
  SELECT pm.post_id
  FROM wp_postmeta pm
    JOIN wp_icl_translations t ON t.element_id = pm.meta_value
  WHERE meta_key = '_icl_lang_duplicate_of' AND meta_value > 0 AND t.language_code = 'YYYY'
)

3. 孤立した投稿メタデータの削除


サーバーの設定によっては、このクエリの実行に時間がかかり、タイムアウトする可能性があることに注意してください。さらに、このクエリはデータベースから孤立した投稿メタデータをクリアするためにのみ使用されるため、実行は必須ではありません。
wp_postmetaからの孤立したデータの削除
DELETE pm
FROM wp_postmeta pm
  LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL

執筆者:Amir · 最終更新日:2022年5月23日