如何仅从当前循环获取类别列表?

时间:2017-07-12 03:56:41

标签: php wordpress

我有这个简单的Post Loop通过标准查询来显示我的主页中的帖子:

<?php
 if (have_posts()) : while (have_posts()) : the_post();?>
  <h2><?php the_title(); ?></h2>
  <?php the_category( ' ' ); ?>
 <?php endwhile; ?>
<?php endif; ?>

这将给我下面的帖子列表:
1)这是后一个 - 类别:Apple
2)这是后两个 - 类别:葡萄
3)这是帖子三 - 类别:樱桃
4)这是第四篇 - 类别:芒果
5)这是后五 - 类别:Apple
6)这是后六 - 类别:芒果
7)这是后七类别:葡萄

我想将上面循环中的所有类别显示为下拉列表;不是我的WordPress中的所有类别。 我的WordPress中还有其他类别,例如Kiwi,Melon,Banana等......我不想在我的类别下拉列表中显示它们。

我试过了:

if( $terms = get_terms( 'category', 'orderby=name' ) ) : 
    echo '<select><option>Select category...</option>';
    foreach ( $terms as $term ) :
        echo '<option value="' . $term->term_id . '">' . $term->name . '</option>'; 
    endforeach;
    echo '</select>';
endif;

它显示了我的WordPress中的所有类别。如何仅从上面的循环中限制此列表中显示的类别。

1 个答案:

答案 0 :(得分:1)

    now i have create code and run on my end. it works fine. you will be able to get all categories ids which has assigned to post in loop. Test below code

    if ( have_posts() ) :

    $catarray = array();
                    /* Start the Loop */
                    while ( have_posts() ) : the_post();

    $category_detail = get_the_category( $post->ID );
    //print_r($category_detail);exit;

    //here you will be able to see all category detail. print this object
    //i am assuming $category_detail['term_id'];
    if(!in_array($category_detail[0]->term_id,$catarray ))
    {
        $catarray[] = $category_detail[0]->term_id;
    }
    endwhile;
    endif;
    print_r($catarray);
foreach($catarray as $cat)
{
$thisCat = get_category($cat);
echo "<li>".$thisCat->name."</li>";
}