Pre_Get_Post不会开火...有人知道我的代码出了什么问题吗?

时间:2018-06-14 作者:Galgóczi Levente

我试图用pre\\u get\\u帖子排除类别“1”:

function exclude_category( $query ) {
    if( !is_admin() && $query->is_home() && $query->is_front_page() && $query->is_main_query() && $query->is_tag() && $query->is_search())
    {
        $query->set( \'cat\', \'-1\' ); // I also trying without the \'\' on the -1 (cat id)
    }
}
add_action( \'pre_get_posts\', \'exclude_category\' );
I\'am use on my pages主查询:

if (have_posts()) : while (have_posts()) : the_post();

1 个回复
最合适的回答,由SO网友:WebElaine 整理而成

你的状况有几个问题:

单个查询无法匹配所有条件-它不能是tag 以及search, 例如您需要使用|| (或)可能嵌套-例如,

if(!is_admin() && ($query->is_home() || $query->is_search())) {
这表示,“如果我们不在管理区域,并且它是主页查询或搜索查询,那么请执行此操作。”

此外,一些is_ 您尝试满足的条件不是您测试查询的方式。is_front_page() 无法调用,因为尚未设置查询-但是is_home() 可以Read up in the documentation 要进一步了解哪些条件是有效的,然后可以先尝试一个简化的查询,例如if(!is_admin()) 为了确保它正在运行,然后一次添加一个附加条件,这样您就可以知道是哪一个具体导致了问题。

结束

相关推荐