@kuzubina

Как получить посты по категориям из пользовательских типов постов?

Зарегистрировал новый тип пользовательских постов
add_action('init', 'product');
function product()
{
  $labels = array(
    'name' => 'Товары',
    'singular_name' => 'Товары',
    'add_new' => 'Добавить товар',
    'add_new_item' => 'Добавить новый товар',
    'edit_item' => 'Редактировать товар',
    'new_item' => 'Новый товар',
    'view_item' => 'Посмотреть товар',
    'search_items' => 'Найти товар',
    'not_found' =>  'Товаров не найдено',
    'not_found_in_trash' => 'В корзине товаров не найдено',
    'parent_item_colon' => '',
    'menu_name' => 'Товары'
  );

  $args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true,
    'show_in_menu' => true,
    'query_var' => true,
    'rewrite' => true,
    'capability_type' => 'post',
    'has_archive' => true,
    'hierarchical' => false,
    'menu_position' => 5,
    'supports' => array('title','editor','thumbnail', 'comments'),
		'taxonomies' => array('product') 
  );
  register_post_type('product',$args);  
}

// Создаем новую таксономию для товаров
add_action( 'init', 'create_product_taxonomies', 0 );

function create_product_taxonomies(){
  $labels = array(
    'name' => _x( 'Категории товаров', 'taxonomy general name' ),
    'singular_name' => _x( 'Категория товара', 'taxonomy singular name' ),
    'search_items' =>  __( 'Найти категорию товара' ),
    'all_items' => __( 'Все категории товара' ),
    'parent_item' => __( 'Родительская категория товара' ),
    'parent_item_colon' => __( 'Родительская категория' ),
    'edit_item' => __( 'Родительская категория' ),
    'update_item' => __( 'Обновить категорию' ),
    'add_new_item' => __( 'Добавить новую категорию' ),
    'new_item_name' => __( 'Название новой категории товаров' ),
    'menu_name' => __( 'Категории товаров' ),
  );

  register_taxonomy('product', array('product'), array(
    'hierarchical' => true,
    'labels' => $labels,
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => array( 'slug' => 'product' ),
  ));

}


и пытаюсь таким циклом вывести посты по категориям, но выводит все посты категории product как быть?)
<?php
$pc = new WP_Query('post_type=product&cat=medical-masks&order=ASC'); ?>
<?php while ($pc->have_posts()) : $pc->the_post(); ?>

    <?php the_title(); ?>
<?php endwhile; wp_reset_postdata(); ?>
  • Вопрос задан
  • 30 просмотров
Пригласить эксперта
Ответы на вопрос 2
AntonLitvinenko
@AntonLitvinenko
HTML coder
category_name.
В cat передаётся id.
И ещё. Тип записи product может конфликтовать с woocommerce, если он вдруг понадобится
Ответ написан
Комментировать
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Таксономия и post type не могут иметь одинаковый слаг product и, как сказал Антон, это вызовет конфликт с woocommerce, если он понадобится

Вашу задачу вообще сложно решить одним запросом. Тут либо делать отдельные запросы для каждой категории, либо в цикле проверять к какой категории принадлежит пост, собирать их в свои переменные и потом выводить. + остается открытым вопрос, что делать, если пост оказался в двух разный категориях
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы