首页 > 解决方案 > 从自定义帖子类型中排除术语的帖子

问题描述

帖子类型是新闻。分类法是印刷机类型 (slug=presstype)。术语是新闻稿(slug=release)。

我只是想在我的函数文件中添加一些 PHP,它将从普通的 Wordpress 自定义帖子类型循环(例如 mydomain.com/press)中排除任何称为“发布”的帖子,而不是从其他可能包含新闻的自定义循环中排除.

搜索了很多不同的方式,但无法真正找到有效的解决方案。任何人都知道最简单的functions.php代码可以做到这一点吗?

标签: phpwordpressfunction

解决方案


您是否尝试过简单地删除术语releasewith pre_get_posts?为了语义清晰,你可以用is_post_type_archive()函数包装它。因此,仅在/press页面(按存档)上,tax_query设置了一个参数以排除任何带有术语 slug 的帖子release

add_action( 'pre_get_posts', 'remove_release_from_press' );
function remove_release_from_press( $query ) {
    if( is_post_type_archive( 'press' ) ){
        $tax_query = array([
            'taxonomy' => 'presstype',
            'field'    => 'slug',
            'terms'    => 'release',
            'operator' => 'NOT IN',
        ]);
        $query->set( 'tax_query', $tax_query );
    }
}

推荐阅读