Php 从特定帖子类型中排除帖子

Php 从特定帖子类型中排除帖子,php,wordpress,woocommerce,custom-post-type,taxonomy,Php,Wordpress,Woocommerce,Custom Post Type,Taxonomy,我创建了一个post_类型的“集合”,它的所有分类法都连接到post_类型的“产品” 所以当我这么做的时候 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_类型的“集合”,它的所有分类法都连接到post_类型的“产品”

所以当我这么做的时候

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;
global$wp;
$posts=get_terms($wp->query_vars[“name”]);
foreach($posts作为$post):?>

Francis,代码当前获取的是“术语”而不是帖子,这就是为什么你得到的比你想要的更多。如果您希望获取帖子(而不是术语),请使用


这个例子和你想要的最接近,在你的帖子类型和分类法中替代它。

我是这样做的

<?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\u count成功了


另一个问题是,当它为空时,它会隐藏起来,我需要将它全部显示出来,即使是空的

我认为您对变量的命名方式感到困惑。Try$terms=get_terms('style');获取分类法“样式”下的所有术语。您正在获取术语而不是帖子,帖子类型不需要与get_有任何关系,除了可以将术语分配给post_类型id之外,post_类型设置允许它。也许您的问题是如何获取在post type product中分配给帖子而不是分配给type collection的帖子的术语?