从特定的post_type中排除帖子

时间:2018-07-06 10:16:09

标签: php wordpress woocommerce custom-post-type taxonomy

我创建了一个post_type“集合”,其所有分类法都与post_type“ product”相关联

所以当我这样做

global $wp;
$posts = get_terms( $wp->query_vars["name"]);
foreach($posts as $post): ?>
<a href="<?php echo get_term_link( $post );?>" rel="bookmark"><?=$post->name . " (".$post->count.")" ?> </a>
<?php endforeach;

这将在“样式”分类下显示post_type“产品”中的所有术语

但它还会在分类法“样式”下的post_type“集合”下显示术语

如何排除在post_type“收藏夹”下显示字词

enter image description here

2 个答案:

答案 0 :(得分:0)

Francis,该代码当前获取的是“条款”而不是帖子,这就是为什么您获得的收益比您想要的更多。如果您希望获取帖子(而非术语),请使用https://developer.wordpress.org/reference/functions/get_posts/

此示例最接近您要寻找的https://developer.wordpress.org/reference/functions/get_posts/#comment-2516,用您的post_type和分类法代替。

答案 1 :(得分:0)

我Kinda就是这样

<?php
$posts = get_terms($wp->query_vars["name"]);
$terms = get_terms($wp->query_vars["name"], array(
    'hide_empty' => 0,
));

foreach( $terms as $term ) :
    wp_reset_query();
    $args = array('post_type' => 'product',
        'tax_query' => array(
            array(
                'taxonomy' => $wp->query_vars["name"],
                'field' => 'slug',
                'terms' => $term->slug          
            ),
        ),
     );
    $posts = new WP_Query($args); 

    if( $posts->have_posts() ) : ?>
        <h3><?php echo $term->name; ?> - <?php echo $posts->post_count ?></h3>
    <?php endif; endforeach; ?>

所以 $ posts-> post_count 起到了作用

另一个问题是,当它为空时它会隐藏,我什至需要显示所有空的