WPML отображать посты определенного языка - PullRequest
0 голосов
/ 09 мая 2018

У меня такая проблема. На моем сайте 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 (в моей ситуации) страница с сообщениями становится пустой. Можете ли вы посоветовать мне, как это исправить?

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

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

0 голосов
/ 09 мая 2018

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

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