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

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

Я создал настраиваемый тип сообщения под названием «отзыв» с настраиваемой таксономией «категории отзывов». в категориях отзывов я создал термины «коллеги» и «клиенты». Я тоже пытаюсь создать архивные страницы. Один, который перечислит все сообщения под коллегами, а другой перечислит все сообщения под клиентами. Я создал архивные страницы taxonomy-testimonial_categories-clients.php и taxonomy-testimonial_categories-коллеги.php. И может создать список всех сообщений под отзывами cpt, но не может фильтровать его по терминам Коллеги или клиенты.

После исследования wordpress.org я считаю, что использование tax_query с новым WP_Query - лучший способ. Вот код, с которым я сейчас работаю.

 <?php           

 $args = array(
'post_type' => 'testimonial',
'tax_query' => array(
    array(
        'taxonomy' => 'testimonial_categories',
        'field' => 'slug',
        'terms' => 'colleagues'
    )
)
);

$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();    ?>
<span class="frame small alignleft">                 
            <?php the_post_thumbnail(thumbnail); ?>   
            <span>                                           
          <div class="test-content">                                                                                    
        <?php the_content(); ?>                                         
            </div>   
<?php endwhile; ?>

person user1925676    schedule 23.12.2012    source источник


Ответы (1)


Хотя это уже слишком поздно, это единственное решение, которое сработало для меня,

$my_taxonomy_name = "your taxo. name";
$my_term_name = "your term name";
$my_term_id = -1;

$terms = get_terms($my_taxonomy_name);

if(count($terms)>0){
     foreach ($terms as $term) {
       if($term->name == $my_term_name){
           $term_id=$term->term_id;
           continue;
       }        
     }
$my_posts = array();
$postids_in_term = get_objects_in_term($term_id,'ad_setting'); 
foreach($postids_in_term as $post_id){
    array_push($my_posts,get_post($post_id));
}

var_dump($my_posts);
}

Ни в коем случае это не элегантно, но это работает!

person nthapa    schedule 05.08.2013