ラディスラフさん、ご提案ありがとうございます。
を使用icl_object_id
するのは良い考えでしたが、問題に取り組んでいると、コンテンツに「何もしない」という値が設定されているかどうかについてあまり気にする必要がないことがわかりました。 . ドキュメントには、「テーマを多言語で機能させる」をオフにする必要があると記載されていますが、これが ThemeForest テーマであるため、これがテーマにどのように影響するかを判断するのは困難です。
WPML が翻訳する必要のないコンテンツを管理する方法に関する問題を解決できるので、真に柔軟なソリューションが必要です。
しかし、あなたの提案で、私は答えを探し続け、私の問題に対する解決策の始まりを見つけました.
まず、リンクを編集するには、編集するリンクの種類に対応する「add_filter」を設定する必要がありました。
add_filter( 'post_type_link', 'add_lang_fr', 10, 2 );
add_filter( 'term_link', 'add_lang_fr', 10, 2 );
次に、URL をテストして、?lang=fr を追加する必要があるコンテンツと一致することを確認します。
function add_lang_fr( $url, $post ) {
if ('fr' == ICL_LANGUAGE_CODE) { // if current language is fr
if ( 'article' == get_post_type( $post ) || FALSE !== strpos($url, 'article-tag') ) { // if link goes to a CPT 'article' or have 'article-tag' in url
return add_query_arg('lang', 'fr', $url);
}
}
return ($url);
}
私の最初の質問に答えるには:
- URL に基づいて、コンテンツに「何もしない」という値があるかどうかを検出するにはどうすればよいですか? - 別の方法を使用して、?lang=fr を追加する必要がある URL をフィルタリングします
- これらのコンテンツの URL に「?lang=fr」をオンザフライで追加するにはどうすればよいですか? -
add_query_arg
URLにクエリ引数を追加できるため、キーでした...これはまさに私が必要としていたものでした。
- サイトの速度を落とさずにこれを行うことは可能ですか? -このソリューションでは、150 の余分なリクエストと +16 秒の読み込みがあります (テストされたページには、編集された約 2000 の URL があります)。
呼び出し回数を減らし、ページの読み込みを改善する方法はありますか?