Как вывести типы записей по определенной таксономии?
Хоть убейте не пойму куда тулить
есть вот такой код, который выводит лист типов записей
<?php // Запрашиваем продукты $query = new WP_Query( [ 'post_type' => 'news', 'posts_per_page' => 9, 'paged' => get_query_var( 'page' ), ] ); // Обрабатываем полученные в запросе продукты, если они есть if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post();?> <div class="news-item"> <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> <p><?php $content = get_the_content(); echo mb_strimwidth($content, 0, 120, '.');?></p> </div> <?php } wp_reset_postdata(); } ?> |
<?php // Запрашиваем продукты $query = new WP_Query( [ 'post_type' => 'news', 'posts_per_page' => 9, 'paged' => get_query_var( 'page' ), ] ); // Обрабатываем полученные в запросе продукты, если они есть if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post();?> <div class="news-item"> <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> <p><?php $content = get_the_content(); echo mb_strimwidth($content, 0, 120, '.');?></p> </div> <?php } wp_reset_postdata(); } ?>
типы записей делятся еще на таксономии news
допустим
naklad(чешский язык) и грузовые(на русском) то есть это одна таксономия только на разных языках
как мне указать эти 2 таксы, что бы по ним выводились записи а не все
я так понимаю это где то тут делается
$query = new WP_Query( [ 'post_type' => 'news', 'posts_per_page' => 9, 'paged' => get_query_var( 'page' ), ] ); |
$query = new WP_Query( [ 'post_type' => 'news', 'posts_per_page' => 9, 'paged' => get_query_var( 'page' ), ] );
через get_terms()
только как его правильно втулить?
Подскажите пожалуйста
Дополнительно
Ответы:
вам нужно добавть таксономии в ваш цыкл:
'tax_query' => array( array( 'taxonomy' => 'название_таксономии', 'field' => 'slug', 'terms' => array( 'значение_термина_1', 'значение_термина_2' ), ), ) |
'tax_query' => array( array( 'taxonomy' => 'название_таксономии', 'field' => 'slug', 'terms' => array( 'значение_термина_1', 'значение_термина_2' ), ), )
-
$query = new WP_Query( [ 'post_type' => 'news', 'posts_per_page' => 9, 'paged' => get_query_var( 'page' ), 'tax_query' => array( array( 'taxonomy' => 'название_таксономии', 'field' => 'slug', 'terms' => array( 'значение_термина_1', 'значение_термина_2' ), ), ) ] );
$query = new WP_Query( [ 'post_type' => 'news', 'posts_per_page' => 9, 'paged' => get_query_var( 'page' ), 'tax_query' => array( array( 'taxonomy' => 'название_таксономии', 'field' => 'slug', 'terms' => array( 'значение_термина_1', 'значение_термина_2' ), ), ) ] );
т.е так? я в php ни бумбум, вот и бьюсь уже весь вечер как это сделать
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
В этом месте нужен не get_terms, а фильтр запроса через tax_query. get_terms используют, когда надо получить список рубрик/терминов для табов или меню. А чтобы сам WP_Query вернул записи только из нужных терминов, в аргументы запроса добавляется tax_query с названием таксономии и slug терминов. В вашем случае тип записи, судя по коду, news. Название таксономии может быть news, news_category или другое - его нужно взять из register_taxonomy либо из админки/кода темы.
$paged = max(1, get_query_var('paged')); $query = new WP_Query([ 'post_type' => 'news', 'post_status' => 'publish', 'posts_per_page' => 9, 'paged' => $paged, 'tax_query' => [ [ 'taxonomy' => 'news_category', 'field' => 'slug', 'terms' => ['naklad', 'gruzovye'], 'operator' => 'IN', ], ], ]);
Дальше цикл можно оставить прежним, только вывод лучше экранировать и после своего запроса обязательно сбрасывать глобальный post:
if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); echo '<div class="news-item">'; echo '<p><a href="' . esc_url(get_permalink()) . '">' . esc_html(get_the_title()) . '</a></p>'; echo '<p>' . esc_html(wp_trim_words(get_the_content(), 22, '...')) . '</p>'; echo '</div>'; } wp_reset_postdata(); }
Если нужно выводить вкладки, тогда get_terms пригодится отдельно: получаете термины таксономии, рисуете кнопки, а выбранный slug передаете в terms. Не путайте три сущности: post_type - это news, taxonomy - контейнер категорий, terms - конкретные значения вроде naklad и gruzovye. Если указать не тот slug таксономии, запрос просто вернет пустой список.