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

14 мар. 2012 г., 19:43:14
Просмотры: 131K
Голосов: 19

Итак, у меня есть произвольный тип записи (Custom Post Type) под названием "Services". У этого типа записи есть таксономия под названием "Areas", которая содержит 5 терминов.

Допустим, у меня есть 10 записей в "Services", из которых 5 записей относятся к термину "Painting" и еще 5 к термину "Photography".

Мне нужно получить записи из "Services", но вместо отображения всех 10 записей показать только 5, связанных с "Painting".

На данный момент я могу делать запросы по таксономии и терминам, но это показывает все записи из "services" без фильтрации по термину.

По сути, нужно получить записи по post_type из выбранного термина.

Любая помощь будет очень полезна. Спасибо.

<ul id="service-list">
<?php 
        $args = array('tax_query' => array( array('taxonomy' => 'areas', 'field' => 'slug','terms' => 'painting')));

        $the_query = new WP_Query( $args );

        if($the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();

        ?>

    <li class="service">
        <h2><?php the_title(); ?></h2>
        <?php the_content(); ?>
    </li><!-- /.service -->

<?php endwhile; else: ?>

    <p>Ничего не найдено.</p>

<?php endif; wp_reset_postdata(); ?>

</ul><!-- #service-list -->

Если бы я мог просто указать в $args, из какого post_type получать записи, это решило бы проблему.

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

Хорошо, похоже, я слишком усложнил все это, а решение было очень простым:

Rise Rise
14 мар. 2012 г. 19:55:34

Пожалуйста, отметьте ваш ответ как правильный или удалите тему.

AlxVallejo AlxVallejo
14 мар. 2012 г. 19:57:22

Мне нужно подождать 7 часов, чтобы опубликовать решение :(

Rise Rise
14 мар. 2012 г. 19:58:28
Все ответы на вопрос 1
0
36

Это ответ на вопрос :)

<?php 

$args = array(
    'post_type'=> 'services', // тип записи - услуги
    'areas'    => 'painting', // область - покраска
    'order'    => 'ASC'      // сортировка по возрастанию
);              

$the_query = new WP_Query( $args );
if($the_query->have_posts() ) : 
    while ( $the_query->have_posts() ) : 
       $the_query->the_post(); 
       // здесь будет контент
    endwhile; 
    wp_reset_postdata(); // сброс данных запроса
else: 
endif;

?>
22 мар. 2012 г. 17:25:04