it-swarm.com.ru

Запрос пользовательских сообщений по категориям

Я пытаюсь запросить пользовательский тип записи с именем news по категории с именем Alumni с помощью ID=160.

Когда я использую такие аргументы, в результате я получаю все свои собственные сообщения без Alumni категории:

$args = array(
  'posts_per_page' => -1,
  'post_type' => 'news',
  'orderby' => 'date',
  'order' => 'DESC',
  'category__not_in' => 160
);
$loop = new WP_Query( $args );

<?php while ( $loop->have_posts() ) : $loop->the_post();?>
...
<?php endwhile; ?>

Тем не менее, изменение category__not_in на category__in дает пустой список, но я бы ожидал противоположного первоначального результата. Я не могу понять, где я совершил ошибку.

Кроме того, я попытался использовать cat и category_name вместо этого, и я играл с разными категориями, но результаты всегда были одинаковыми.

В моем исследовании я наткнулся на 'tax_query', но я не могу заставить его работать. Документация для меня не совсем понятна.

1
bdobry

Это пользовательские таксономии или обычные категории?

если это просто категории, которые вы должны использовать:

$args = array(
  'posts_per_page' => -1,
  'post_type' => 'news',
  'orderby' => 'date',
  'order' => 'DESC',
  'category_name' => 'Alumni'
);
$loop = new WP_Query( $args );

<?php while ( $loop->have_posts() ) : $loop->the_post();?>
...
<?php endwhile; ?>

если вы хотите использовать его по id

использовать:

'cat' => 160 

вместо

'category_name' => 'Alumni'
1
rudtek

Пытались ли вы использовать что-то подобное в массиве, ранее была похожая проблема, которая решалась.

'taxonomy' => 'your_taxonomy_name',

Или что-то вроде:

    'tax_query' => array(
        'taxonomy' => 'your_taxonomy_name',
        'terms' => 'Alumni',
        'field' => 'slug',
        'include_children' => true,
),
0
Randomer11

Чтобы получить пользовательский тип сообщения с определенной категорией, используйте пользовательскую таксономию

Зарегистрируйте имя таксономии пользовательского типа сообщения, например категории, а затем назначьте категорию каждому сообщению при добавлении нового сообщения. Вот пример кода

  add_action( 'init', 'news_my_taxonomy');
  function news_my_taxonomy(){
 // custom post type taxonomies
    $labels = array(
    'name' => 'Categories',
    'singular_name' => 'Category',
    'add_new' => 'Add Category',
    'add_new_item' => 'Add New Category',
    'all_items' => 'All Categories',
    'edit_item' => 'Edit Item',
    'new_item' => 'New Item',
    'view_item' => 'View Item',
    'update_item' => 'Update Category',
    'search_items' => 'Search Categories',
    'not_found' => 'No record found',
    'not_found_in_trash' => 'No items found in trash',
    'parent_item_colon' => 'Parent Item',
    'menu_name' => 'Categories'
    );
    $args = array(
        'labels' => $labels,
        'hierarchical' => true,
        'has_archive' => true,
        'rewrite' => array('slug' => 'news_category'),
        'show_ui' => true,
        'show_admin_column' => true,
        'query_var' => true,
        );
        register_taxonomy('news_category', array('news'), $args);
}

затем

создать страницу шаблона таксономии 'taxonomy-news_category.php'

и добавьте запрос, чтобы получить сообщения с этим названием категории

   $cat_name = single_cat_title;
   $args = array( 'category_name' => $cat_name, 'posts_per_page' => 12, 'order'=> 'ASC', 'post_type' => 'news', 'paged' => $paged);

Вся работа выполнена. Удачи

0
HeroWeb512