- ステータス
- 解決済み
- 報告対象
- WPML Multilingual CMS 4.6.9
- 解決されたバージョン
- WPML 4.9.3
- トピックタグ
- Bug
問題の概要
カスタムページテンプレートを使用している場合、選択したテンプレートが翻訳されたページに正しく適用されないことがあります。
回避策
カスタムページテンプレートが翻訳されたページに正しく適用されるようにするには、以下の手順に従ってください。
wp_postsおよびicl_translationsテーブルの両方から関連するエントリを削除します。
- 上部の管理バーを使用してセカンダリ言語に切り替え、外観 > エディターに移動して、翻訳されたテンプレートを見つけ、それを削除します。
- WPML > 設定 > ページ URLで、スラッグ翻訳の「翻訳」を有効化します(これにより、テンプレートのスラッグがタイトルから自動生成されるのではなく、翻訳に含まれるようになります)。
- 次のファイルを開きます:wp-content/plugins/sitepress-multilingual-cms/classes/full-site-editing/BlockTemplates.php
- 56行目付近の次の行をコメントアウトします。
$postData['post_name'] = $post->post_name;
- テンプレートを翻訳に再送信します。
- テンプレートを翻訳する際は、スラッグが正しく、翻訳されたページまたはタクソノミースラッグが含まれていることを確認してください。
エッジケースのシナリオ
特定の順序で処理が行われた場合、翻訳されたページが翻訳されたテンプレートに関連付けられないことがあります。
- 新しいページの作成中に直接新しいカスタムテンプレートを作成する(右側のサイドバーで「テンプレート > 新規テンプレートを作成」を選択する)と、ページとそのテンプレートの両方が同時に公開されます。
- 自動翻訳(「すべてを翻訳する」)が有効化されている場合、WPMLはページとテンプレートの両方を同時に翻訳に送信します。
- テンプレートの翻訳よりも先にページの翻訳が完了した場合、割り当てるべき翻訳されたテンプレートがまだ存在しません。そのため、翻訳されたページには代わりにデフォルトテンプレートが適用されてしまいます。
- これを解決するには、テンプレートの翻訳が完了して公開済みになった後、新しく翻訳されたテンプレートが正しく適用されるように、翻訳されたページを再送信して翻訳します。