WordPress多语言站点文章循环仅英文页显示法语页不显示求助
你遇到的是WordPress多语言站点的典型查询过滤问题,按以下步骤排查即可解决:
排查方案
- 确认法语语言下有已发布的公开文章
目前绝大多数多语言插件(WPML/Polylang/TranslatePress等)默认会给WP_Query增加语言过滤规则,仅拉取当前页面对应语言的内容。你需要先进入WordPress后台「文章」管理页,切换到法语语言视图,确认至少有2篇状态为「已发布」的公开法语文章。如果只有英文文章没有对应法语翻译,查询自然返回空结果,就会显示你说的带Blog字样的空白框。 - 显式指定查询的语言参数
如果你需要强制拉取对应语言的文章,或者不需要按语言过滤,可以给WP_Query增加参数覆盖插件的默认规则,参考修改后的代码:<?php // 如果使用Polylang,可用pll_current_language()获取当前页面语言 $current_lang = function_exists('pll_current_language') ? pll_current_language() : ''; $loop = new WP_Query( array( 'post_type' => 'post', 'posts_per_page' => 2, 'order' => 'ASC', 'lang' => $current_lang, // Polylang参数,指定查询语言 // 如果是WPML,可使用ICL_LANGUAGE_CODE常量指定语言 // 'lang' => defined('ICL_LANGUAGE_CODE') ? ICL_LANGUAGE_CODE : 'en', ) ); if ( $loop->have_posts() ) : while ( $loop->have_posts() ) : $loop->the_post(); ?> <span><?php the_time( 'jS F, Y' ); ?></span> <h6><?php the_title(); ?></h6> <p><?php the_excerpt(); ?></p> <a href='<?php the_permalink(); ?>' class='learn-btn'>Learn More <img src='<?php echo get_template_directory_uri(); ?>/images/a2.png' alt=''></a> <?php endwhile; endif; wp_reset_postdata(); ?> - 检查多语言插件的配置
确认插件后台没有开启「隐藏未翻译内容」的开关,如果你不需要翻译文章只想把英文文章同步显示在法语页,可以在插件设置里关闭语言过滤,或者设置所有语言下都显示默认语言的内容。 - 临时调试验证
可以在法语页的查询代码后加一行var_dump($loop->posts);打印查询结果,确认是不是真的没有返回文章数据,排除前端样式隐藏内容的可能性。
内容的提问来源于stack exchange,提问作者Kyle White
相关产品推荐
相关产品推荐

