Wordpress 从一个自定义帖子类型中筛选wp_列表_类别

Wordpress 从一个自定义帖子类型中筛选wp_列表_类别,wordpress,taxonomy,wp-list-categories,Wordpress,Taxonomy,Wp List Categories,我有两种自定义的post类型,分别称为“project”和“client”,它们共享一个名为“sector”的分类法 if (!is_taxonomy('sector')) { register_taxonomy( 'sector', array('project', 'client'), array( 'hierarchical' => true, 'label' => 'Sector', 'query

我有两种自定义的post类型,分别称为“project”和“client”,它们共享一个名为“sector”的分类法

if (!is_taxonomy('sector')) {
        register_taxonomy(
        'sector', array('project', 'client'), array(
        'hierarchical' => true,
        'label' => 'Sector',
        'query_var' => true,
        'rewrite' => array( 'slug' => 'sector' ),
        'with_front' => false
        ) );

        wp_insert_term('Health', 'sector');
        wp_insert_term('Clubs', 'sector');
        wp_insert_term('Commercial', 'sector');     
    }
我已经创建了一个分类法归档模板,其中包含一个侧栏导航,其中列出了指向分类法归档的链接,使用:

//list terms in a given taxonomy using wp_list_categories 

    $orderby      = 'name'; 
    $show_count   = 1;      // 1 for yes, 0 for no
    $pad_counts   = 0;      // 1 for yes, 0 for no
    $hierarchical = 0;      // 1 for yes, 0 for no
    $show_option_none='';
    $title        = '';

    $args_sector = array(
      'taxonomy'     => 'sector',
      'orderby'      => $orderby,
      'show_count'   => $show_count,
      'pad_counts'   => $pad_counts,
      'hierarchical' => $hierarchical, 
      'title_li'     => $title
    );


<ul id="sideNav" class="rightSubMenu">   
      <h3 class="rightSubNav">SECTOR</h3>
      <ul id="sideNav" class="rightSubMenu">
        <?php wp_list_categories( $args_sector ); ?>
      </ul>

</ul>
问题是,如果我有一个链接到“俱乐部”的项目和一个链接到“俱乐部”的客户,输出计数显示为2。此外,归档页面显示了2篇文章-1篇用于项目,1篇用于客户。但只有一个项目

我主要关注的是项目页面,并希望根据我的“项目”帖子类型筛选结果。我看了一下法典,wp_list_categories函数似乎不接受这样做的参数


有人能帮忙吗?有更好的方法吗?

我也有类似的问题。为此,我克隆了wp_list_categories函数,给它一个不同的名称,并在$categories=get_categories$r:

 foreach ($categories as $key => $category){
        $temp = array ( 'post_type'=>$r['type'], 'tax_query' => array(
            array (
                'taxonomy' => $category->taxonomy,
                'field' => 'slug',
                'terms' => $category->slug
            )

        )
            );
        $pauli = new wp_query($temp);
        if($pauli->post_count==0){
            unset($categories[$key]);
        }
    }

如您所见,它会删除没有您需要的任何帖子类型的类别,然后像wp_list_categories那样继续此过程。

您可以通过这种方式实现,而无需创建wp_list_categories的自定义版本。要以更简洁的方式使用相同的代码,请钩住,并检查目标分类法、您不在仪表板中以及主查询是否已执行。。然后改变计数。