如何修改此函数以排除属于特定类别的帖子?

时间:2014-08-03 作者:AndreaNobili

我是WordPress开发的新手,我有以下问题。

我使用此函数(声明为functions.php 我的主题的文件)来修改main query 这样,具有特定标签的帖子就不会显示在我的主页中:

function exclude_featured_tag_and_legacy_posts( $query ) {

    $tagId = get_tag_ID("featured");
    //echo("Featured Tag Id: + $tagId");

    if ( $query->is_home() && $query->is_main_query() ) {
        //$query->set( \'tag__not_in\', \'array(ID OF THE FEATURED TAG)\' );

        $query->set( \'tag__not_in\', array($tagId));
    }

}
add_action( \'pre_get_posts\', \'exclude_featured_tag\' );
如您所见,此函数在主查询创建之后但在执行之前执行,它修改主查询以排除名为featured

好的,看起来不错。现在我的问题是。如何进一步修改我的主查询,以便也排除属于特定类别的帖子?

所以我想把这两篇文章都排除在外featured 标签和属于legacy 类别

你能帮帮我吗?

2 个回复
SO网友:Pieter Goosen

pre_get_postsWP_Query 使用完全相同的参数,因此如果需要知道可以使用哪些参数pre_get_posts, 只需访问WP_Query 抄本中的页码。

还有一个技巧可以用来获取所有参数(query_vars) 您可以使用。只需将此添加到页面上,即可获得query_vars 从中,刷新页面,此函数将打印出所有query_vars 您可以使用pre_get_postsWP_Query

<?php global $wp_query; ?>
    <pre><?php var_dump($wp_query->query_vars); ?></pre>
<?php
要排除类别,可以使用catcategory__not_in. 两者都采用类别ID,cat 取整数和category__not_in 数组。因此,在函数中可以执行以下操作之一

$query->set( \'category__not_in\', array(ARRAY OF CAT ID\'s));

OR

$query->set( \'cat\', \'ID\'s OF CAT\');
您只需确保您的回调函数add_action 并且您的实际函数名不匹配。exclude_featured_tag 必须是exclude_featured_tag_and_legacy_posts

SO网友:adrian7

请检查category parametersWP_Query 文档

结束

相关推荐

使用IS_CATEGORY()、IS_TAG()、...在函数.php中

我想办理登机手续functions.php 如果实际页面是类别页面、标记页面。。。但是检查它的功能(is_category(), is_tag(), ...) 似乎不起作用,因为这种情况:if(is_category() || is_tag() || is_home()) 永远不要通过。E、 g。is_category() 似乎不需要在循环中调用。知道它为什么不起作用以及如何解决吗?Edit:我的案例的完整示例是:内部功能。php/* Add hentry class to body */ &#