WPML显示某种语言的帖子

时间:2018-05-09 13:03:53

标签: php wordpress wpml

我有这样的问题。在我的WordPress网站上,我使用WPML。我有几类帖子。对于每个类别,我都有一个页面模板,这不是category.php。为了使用分页显示页面上的所有帖子,我使用WP_Query。它看起来像这样。

...
<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$query = new WP_Query( array(
  'cat' => 41,
  'posts_per_page' => 10,
  'paged' => $paged
));
?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<?php get_template_part('template-parts/content', 'record', get_post_format()); ?>
<?php endwhile; ?>
<?php
echo paginate_links( array(
  'base' => str_replace( 999999999, '%#%', esc_url( get_pagenum_link( 999999999 ) ) ),
  'total' => $query->max_num_pages,
  'current' => max( 1, get_query_var( 'paged' ) ),
  'format' => '?paged=%#%',
  'show_all' => false,
  'type' => 'plain',
  'end_size' => 1,
  'mid_size' => 2,
  'prev_next' => true,
  'prev_text' => '<svg class=\'pagination__previous\'><use xlink:href=' . get_template_directory_uri() . '/img/svg/sprite.svg#menu__arrow' . ' ></use></svg>',
  'next_text' => '<svg class=\'pagination__next\'><use xlink:href=' . get_template_directory_uri() . '/img/svg/sprite.svg#menu__arrow' . ' ></use></svg>',
  'add_args' => false,
  'add_fragment' => '',
));
?>
<?php wp_reset_postdata(); ?>
...

所以cat = 41是一个类别的ID。在默认的RU语言中,帖子按预期显示。但是当我切换到其他语言EN或UK(在我的情况下)时,带有帖子的页面是空的。你能告诉我如何解决它吗?

2 个答案:

答案 0 :(得分:0)

尝试抑制过滤器没有测试它但它会有所帮助。

$query = new WP_Query( array(
   'cat' => 41,
   'posts_per_page' => 10,
   'paged' => $paged
   'suppress_filters' => false,
));

答案 1 :(得分:0)

我找到了解决方案。但它看起来很奇怪。不需要suppress_filters。当我选择cat 41时,仅选择默认语言,不显示其他语言。但是如果我将选择44(相同的类别,但使用非默认语言)。我的意思是默认俄语中的类别“新闻”有ID 41(slug:news-ru),这个英语类别有ID 44(slug:news-en)。所以,如果我选择44,一切正常。当我处于默认状态时,将显示默认的帖子。当我切换到英语时,帖子用英语显示更多))当我切换到乌克兰语(slug:news-uk,ID:49)时,第三语言所有帖子都以乌克兰语显示。魔法?有没有人解释?