从自定义帖子类型中排除术语的帖子

时间:2018-05-31 17:29:18

标签: php wordpress function

帖子类型是按。 分类是按类型(slug = presstype)。 术语是新闻稿(slug = release)。

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

搜索了许多不同的方法,但无法真正找到有效的解决方案。有人知道函数.php最简单的代码吗?

1 个答案:

答案 0 :(得分:1)

您是否尝试过将release一词移除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 );
    }
}