私が開発しているテーマでは、標準ループを使用して5つの投稿を表示するテンプレートがあります。
<?php
$my_query = new WP_Query('showposts=5');
while ($my_query->have_posts()) : $my_query->the_post(); ?>
等々....
このテンプレートを使ったページ(Actualites)があります。今私はpolylangを追加し、同じテンプレートを使用する別のページ(News)を提供しました。ブログのエントリには英語の翻訳はありませんが、それでも英語を話す読者には、ニュースページにアクセスしてもらいたいと思います。ニュースページはActualitesと同じ「フランス語」です。
どのページがテンプレートを使用しているかにかかわらず、上記のクエリでも同じ結果が得られると思いますが、実際にはフランス語のページで問題なく機能しますが、ニュースでは投稿が表示されません。何か案は?
わかりました - データベース上の古い投稿には英語の翻訳がありません。それが私のループの問題です。新しい投稿を追加するときに、英語のページに表示される翻訳を提供することもできます。
私が見つけたドキュメントを見てみると、私は以下のようなもので翻訳がない場合にもデフォルトを表示できることがわかりました。
<?php query_posts(array('post_type' => 'post','lang' => 'fr')); // force querying the French posts ?>
if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php global $post;
if($post_id = pll_get_post($post->ID, pll_current_language())) { // get translated post (in current language) if exists
$post = get_post($post_id);
setup_postdata($post);
}?>
...ループ内で必要なことをすべて実行してください。