从技术上讲pre_get_posts
是一个操作,而不是筛选器,您不需要返回任何内容$query
是通过引用传入的,但该代码仍然可以工作。清理后将是:
function excludeCat($query) {
if ( $query->is_home ) {
$catid = get_cat_ID(\'watch-isatv\');
$query->set(\'cat\', \'-\'.$catid);
}
}
add_action(\'pre_get_posts\', \'excludeCat\');
不过,有几个潜在的故障点。
您正在运行主查询后添加筛选器。您必须在主查询之前添加该筛选器。functions.php
应该可以,但在其他主题模板文件中添加该代码,如archive.php
或home.php
不会。已执行主查询
$query->is_home
不是你所期望或需要的。添加var_dump($query->is_home);
到您的代码并加载页面。确保它是true
你需要它在哪里false
否则get_cat_ID() I不正确我会把钱投在问题1上。