Как получить записи термина произвольной таксономии

29 июн. 2015 г., 21:45:38
Просмотры: 20.3K
Голосов: 9

Надеюсь, кто-нибудь поможет мне:

У меня есть Пользовательский Тип Записи (Movie) с его произвольной таксономией (Producer), эта таксономия имеет свои собственные термины, например 'WarnerBros'.

Как я могу получить все записи моего термина (WarnerBros)?

У меня есть этот код, но он пока не работает.

$args = array(
   'post_type' => 'movie',
    'tax_query' => array(
        array(
            'taxonomy' => 'producer',
            'field'    => 'slug',
            'terms'    => 'WarnerBros',
        ),
    ),
);
$query = new WP_Query( $args );

После экспериментов с кодом я решил проблему, поделюсь своим кодом для тех, у кого возникла такая же проблема:

$type = 'Movie';  // Название пользовательского типа записи
$tag =  'WarnerBros'; // Ваш термин

$args = array( 'post_type' => $type, 'paged' => $paged, 'posts_per_page' => -1, 'orderby' => 'menu_order', 'order' => 'ASC', 'tax_query'=>array( array( 'taxonomy'=>'Producer', //Название таксономии 'field'=>'slug', 'terms'=>array($tag) )) );

$loop = new WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_post(); if(is_object_in_term($post->ID,'Taxonomy_Name','Your_Term')) // Producer и WarnerBros {

echo '<div id="YourID">'; echo the_title(); echo '</div>'; } endwhile;

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

Я перепробовал множество примеров, но ни один не сработал.

Ebenizer Pinedo Ebenizer Pinedo
29 июн. 2015 г. 22:19:44

Пожалуйста, не публикуйте блоки кода в комментариях, вместо этого нажмите "редактировать" в своем вопросе, а затем нажмите {}, чтобы ввести ваш код в отформатированном виде. Это упрощает другим пользователям понимание того, что вы пробовали, и возможно, они смогут модифицировать ваш код для решения проблемы!

Howdy_McGee Howdy_McGee
29 июн. 2015 г. 22:21:39

Извините, теперь исправил ;)

Ebenizer Pinedo Ebenizer Pinedo
29 июн. 2015 г. 22:25:30
Все ответы на вопрос 3
2

На этот конкретный вопрос о WordPress есть разные ответы, которые могут быть полезны:

Отображение всех записей произвольного типа, сгруппированных по произвольной таксономии

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

$terms = get_terms('tax_name');
$posts = array();
foreach ( $terms as $term ) {
    $posts[$term->name] = get_posts(array( 'posts_per_page' => -1, 'post_type' => 'post_type', 'tax_name' => $term->name ));
}

Адаптируя под ваш сценарий, это должно работать:

$terms = get_terms('producer');
$posts = array();
foreach ( $terms as $term ) {
    $posts[$term->name] = get_posts(array( 'posts_per_page' => -1, 'post_type' => 'movie', 'tax_name' => $term->name ));
}

Теперь вы можете получить свои записи:

print_r($posts["WarnerBros"]);
29 июн. 2015 г. 22:30:37
Комментарии

У меня не работает, возможно потому что в сниппете нет названия термина.

Ebenizer Pinedo Ebenizer Pinedo
29 июн. 2015 г. 23:03:54

Я отредактировал ответ, чтобы он соответствовал вашим переменным. Не ожидайте, что в ответах будут точно такие же переменные, как у вас.

marcovega marcovega
29 июн. 2015 г. 23:07:44
1

Попробуйте так

$args = array(
    'post_type' => 'movie',
    'tax_query' => array(
        array(
            'taxonomy' => 'producer',
            'field'    => 'slug',
            'terms'    => 'WarnerBros',
        ),
    ),
);
$query = new WP_Query( $args );

Подробнее смотрите в документации WordPress

29 июн. 2015 г. 22:01:11
Комментарии

Кажется, это не работает, мне нужно использовать свой слаг термина? Или, возможно, вызвать другую функцию, например: <?php (have_posts()) : the_post(); ?>

Ebenizer Pinedo Ebenizer Pinedo
29 июн. 2015 г. 22:18:17
0

Предположим, у вас есть пользовательский тип записи plays, и в рамках таксономии genre вы хотите найти все записи с категорией comedy.

$args = array(
        'post_type' => 'plays', /*Тип записи (plays)*/
        'tax_query' => array(
            array(
                'taxonomy' => 'genre', /*Таксономия для поиска (genre)*/
                'field'    => 'slug',
                'terms'    => 'comedy', /*Категория для поиска (comedy)*/
            ),
        ),
    );
    $query = new WP_Query( $args );
19 нояб. 2017 г. 18:11:04