经过一点调查。。。
如果将类别传递给is_category
它使用get_queried_object
要获取数据--see the source. get_queried_object
returns NULL
对于不存在的类别。您可以通过以下方式进行演示:
function custom_posts_per_page($query) {
var_dump(get_queried_object());
}
add_filter( \'pre_get_posts\', \'custom_posts_per_page\' );
加载有效的类别存档,然后加载无效的类别存档。
这个is_category
方法在尝试使用该对象之前不会检查其是否具有有效对象,因此会出现错误。我肯定会认为这是一个bug。
我看到它的唯一方法是首先检查类别的存在:
function custom_posts_per_page($query) {
if ( !is_admin() && term_exists(4,\'category\') && $query->is_category(4)) {
// Leaving this empty or with content
}
}
add_filter( \'pre_get_posts\', \'custom_posts_per_page\' );
或者自己处理逻辑:
function custom_posts_per_page($query) {
if ( !is_admin() && $query->is_category()) {
$qobj = get_queried_object();
if (!empty($qobj)
&& (isset($qobj->taxonomy) && \'category\' == $qobj->taxonomy && 4 == $qobj->term_id)
) {
var_dump($qobj);
}
// Leaving this empty or with content
}
}
add_filter( \'pre_get_posts\', \'custom_posts_per_page\' );
几乎未经测试。可能是马车。买主注意事项。不退款。