Как проверить, нашли ли результаты wp_query какой-либо пользовательский тип post_type?

#php #wordpress

Вопрос:

В моем WordPress v5.8.1 у меня есть запрос ниже taxonomy.php , чтобы получить список сообщений.

 $args = array(
 'post_type' => array('song', 'dance'),
 'post_status' => 'publish',
 'posts_per_page' => 10,
 );
 query_posts($args);
 

Запрос возвращает сообщения от обоих post_type .

Я хотел бы создать меню на той же странице, где я хочу проверить, найдены ли в результатах запроса сообщения от определенного post_type пользователя . Меню выглядит примерно так.

  • В этой таксономии есть записи из песен, танцев (если найдены записи из обоих типов сообщений) или
  • В этой таксономии есть записи из песни (если найдены записи только из типа песни post_type)

Попробовали ниже в цикле:

     $song_count = wp_posts_count('song')->found_posts;
    $dance_count = wp_posts_count('dance')->found_posts;
     if ($song_count=>0 {
     /** code goes here **/
    }
 

Выше возвращено количество из всего WordPress, а не только из текущей таксономии.

Ответ №1:

Вы можете указать результат в переменной, но правильно ли я понял вопрос?

 $args = array(
    'post_type' => array('song', 'dance'),

    // or 'post_type' => get_post_type($post->ID),
    // conditions are no longer necessary

    'post_status' => 'publish',
    'posts_per_page' => 10,
);
$results = query_posts($args);

if($results) {
    $count = 0;
    $current_post_type = get_post_type($post->ID);
    $current_post_type_name = get_post_type_object(get_post_type())->labels->singular_name); // ajust with 2 variables for multiple results
    foreach($results as $result) {
        // if request is in a single custom post  
        if($result->post_type == $current_post_type) {
            $count  ;
        }       
    }
    if($count > 0) {
        echo $count . $current_post_type_name;
    }
}
else {
    // no results
}
 

Комментарии:

1. Я обновил свой вопрос. Я хотел бы создать меню на той же странице, где я хочу проверить, найдены ли в результатах запроса сообщения определенного типа post_type. Меню выглядит примерно так.

2. Вы можете изменить значение post_type на : ‘post_type’ => get_post_type($post->>ИДЕНТИФИКАТОР)