我试图用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();
最合适的回答,由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())
为了确保它正在运行,然后一次添加一个附加条件,这样您就可以知道是哪一个具体导致了问题。