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 — это идентификатор категории. А на языке RU по умолчанию посты отображаются как положено. Но когда я переключаюсь на другие языки EN или UK (в моей ситуации) страница с сообщениями пуста. Можете ли вы посоветовать мне, как это исправить?


person zakharov.arthur    schedule 09.05.2018    source источник


Ответы (2)


Попробуйте подавить фильтр, не проверял, но поможет.

$query = new WP_Query( array(
   'cat' => 41,
   'posts_per_page' => 10,
   'paged' => $paged
   'suppress_filters' => false,
));
person Adeel Nazar    schedule 09.05.2018
comment
Спасибо. На других страницах не по умолчанию сообщения отображаются, но в версиях по умолчанию. - person zakharov.arthur; 09.05.2018
comment
Извините, какое-то обновление. Ничего не изменилось. Такой результат был получен путем добавления global $sitepress; $sitepress->switch_lang( $sitepress->get_default_language() ); и после Query $sitepress->switch_lang( ICL_LANGUAGE_CODE ); - person zakharov.arthur; 09.05.2018
comment
Я нашел решение. Вы можете взглянуть. - person zakharov.arthur; 10.05.2018

Я нашел решение. Но это выглядит странно. Нет необходимости в подавляющих_фильтрах. Когда я выбираю кат 41, выбирается только язык по умолчанию, другие языки не отображаются. НО, если я выберу 44 (та же категория, но не на языке по умолчанию). Я имею в виду, что категория "Новости" по умолчанию на русском языке имеет ID 41 (slug: news-ru), а эта категория на английском языке имеет ID 44 (slug: news-en). Итак, если я выбираю 44, все работает нормально. Когда я нахожусь по умолчанию, отображаются сообщения по умолчанию. Когда я переключаюсь на английский, сообщения отображаются на английском и не только )) когда я переключаюсь на украинский (slug: news-uk, ID: 49) третий язык, все сообщения отображаются на украинском языке. Магия? Есть ли у кого-нибудь объяснение?

person zakharov.arthur    schedule 10.05.2018