Wordpress:使用 post__not_in 排除自定义分类类别

Posted

技术标签:

【中文标题】Wordpress:使用 post__not_in 排除自定义分类类别【英文标题】:Wordpress: Using post__not_in to exclude custom taxonomy category 【发布时间】:2017-07-22 16:42:42 【问题描述】:

我正在尝试从循环中排除自定义分类类别(slug:private-case-study,ID:5)中的项目。我正在使用以下代码,有没有人有建议或想法为什么它不起作用?提前致谢!

// 获取当前页面ID $this_post = $post->ID; $private_case_study = get_term_by('slug', '私人案例研究', 'mgt_portfolio_filter'); // 显示特定类别的项目 if($category_name == '') $wp_query = 新的 WP_Query(数组( 'post_type' => 'mgt_portfolio', 'posts_per_page' => $posts_per_page, 'orderby' => $orderby, '订单' => $订单, 'post__not_in' => 数组($this_post, $private_case_study) )); 别的 $wp_query = 新的 WP_Query(数组( 'post_type' => 'mgt_portfolio', 'tax_query' => 数组( 大批( '分类' => 'mgt_portfolio_filter', '字段' => '蛞蝓', '条款' => $category_name, ), ), 'posts_per_page' => $posts_per_page, 'orderby' => $orderby, 'post__not_in' => 数组($this_post, $private_case_study), '订单' => $订单 ));

【问题讨论】:

【参考方案1】:

//获取当前页面ID $this_post = $post->ID; $private_case_study = get_term_by('slug', 'private-case-study', 'mgt_portfolio_filter');

    // Show items from specific category
    if($category_name == '') 
        $wp_query = new WP_Query(array(
            'post_type' => 'mgt_portfolio',
            'posts_per_page' => $posts_per_page,
            'orderby'    => $orderby,
            'order' => $order,
            'post__not_in' => array($this_post)
        ));
     else 
        $wp_query = new WP_Query(array(
            'post_type' => 'mgt_portfolio',
            'tax_query' => array(
                array(
                    'taxonomy' => 'mgt_portfolio_filter',
                    'field'    => 'slug',
                    'terms'    => $category_name,
                ),
            ),
            'posts_per_page' => $posts_per_page,
            'orderby'    => $orderby,
            'post__not_in' => array($this_post),
            'order' => $order
        ));
    

【讨论】:

【参考方案2】:

post__not_in 接受一个 ID 数组并排除它们。您想使用category__not_in,它采用一组类别 ID 并将它们排除在外。

看看documentation。

【讨论】:

对不起,我应该澄清一下,我正在尝试排除自定义分类类别中的帖子。 category__not_in 会做同样的事情吗? 我可能会误解你,但这应该是category__not_in 所做的。它将采用一系列类别 ID,并且不显示这些类别中的帖子。 post__not_in 采用一组帖子 ID 并且不显示这些单独的帖子。因此,如果“私人案例研究”的 ID 为 1,并且您包含 'category__not_in' => array(1);,它将排除该类别中的所有帖子。 啊,明白了,谢谢!我已经尝试添加它,但它仍然显示该类别中的项目。这是我添加的内容-'post__not_in' => array($this_post), 'category__not_in' => array(5)我遗漏了什么?这不是默认的 Wordpress 博客文章类别,它是主题附带的自定义类别。我是否必须指定类别类型或其他内容?感谢您的帮助! 我可能给你指错了方向。看看answer here。这有帮助吗? 这绝对有帮助,非常感谢!我将'tax_query' => array' 添加到if 语句中,并使用了'operator' => 'NOT IN' 属性,使其工作。非常感谢!

以上是关于Wordpress:使用 post__not_in 排除自定义分类类别的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress 获取不在自定义分类术语中的帖子

WordPress 搜索结果中排除特定的页面文章和分类

从循环中完全排除粘帖

ACF 中继器字段仅显示一行

Wordpress 设置后台自定义post 排序

使用 ajax 的重复帖子加载更多 wordpress