从特定post_type中排除帖子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从特定post_type中排除帖子相关的知识,希望对你有一定的参考价值。

我创建了一个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“product”中的所有术语

但它也显示了分类“风格”下的post_type“集合”下的术语

如何在post_type“collection”下排除显示条款

enter image description here

答案

弗朗西斯,代码目前提取“条款”而非帖子,这就是为什么你得到的比你想要的更多。如果您想要获取帖子(而不是条款),请使用https://developer.wordpress.org/reference/functions/get_posts/

这个例子最接近你正在寻找的https://developer.wordpress.org/reference/functions/get_posts/#comment-2516,替换你的post_type和分类。

另一答案

我有点这样做了

<?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就可以了

另一个问题是它隐藏在空的时候,我需要显示所有空的

以上是关于从特定post_type中排除帖子的主要内容,如果未能解决你的问题,请参考以下文章

排除元值空wordpress的帖子

排除父帖子并在存档中仅显示子帖子

从 WP_Query 中排除特定条款

从 Wordpress 取消注册自定义帖子类型

php 来自特定帖子类型的其他帖子,并排除您当前所在页面的帖子。

php 来自特定帖子类型的其他帖子,并排除您当前所在页面的帖子。