从技术上讲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上。