Запрос Пользовательского Порядка Типов Записей По Полю Таксономии
Это сводит меня с ума. Я знаю, что об этом спрашивали несколько раз, но я не могу этого понять. Я пытаюсь отобразить список продуктов WooCommerce, которые являются пользовательским типом "продукта". Я хочу отсортировать его по таксономии "product_cat".
В следующем коде внутренний цикл while (запрос) - должен-отображать только продукты для каждого product_cat, но вместо этого он отображает - все-продукты.
Почему запрос не фильтрует каждый продукт_кат?
// loop through the categories
foreach ($cats as $cat) {
$cat_id = $cat->term_id;
$cat_slug = $cat->slug;
// Make a header for the category
echo "<h2>".$cat->slug.' '. $cat_id . "</h2>";
// create a custom wordpress query
$args = array(
'post_type' => 'product',
'posts_per_page' => -1,
array(
'taxonomy' => 'product_cat',
'terms' => $cat_id,
'field' => 'term_id',
),
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
echo '<ul>';
while ( $query->have_posts() ) {
$query->the_post();
$p = get_the_ID();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
/* Restore original Post Data */
wp_reset_postdata();
} else {
// no posts found
echo('no posts!');
}
1
1 answers
Вам не хватает ключа tax_query
, и он должен быть вложенным массивом:
$args = array(
'post_type' => 'product',
'posts_per_page' => -1,
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'terms' => $cat_id,
'field' => 'term_id',
),
),
);
Проверьте документацию
3
Author: TheDeadMedic, 2018-03-27 18:17:15