列出多个 $query->set 的正确方法是什么?我可以在下面有多个$query->set像“CODE A”这样的东西吗?
还是我应该将它们合二为一?如果是,您将如何组合这三个$query->set代码?我尝试将它们组合在下面的“CODE B”中,但没有用。
.
代码 A:在结合 $query->set 之前
这段代码在functions.php中
function featured_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'category_name', 'new' );
$query->set( 'cat', '-60, -61' );
$query->set( 'posts_per_page', 5 );
}
}
add_action( 'pre_get_posts', 'featured_category' );
Run Code Online (Sandbox Code Playgroud)
.
代码 B:合并 $query->set 后
这段代码在functions.php中
function featured_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( array( 'category_name' => 'new', 'cat' => '-60, -61', 'posts_per_page' => 5) );
}
}
add_action( 'pre_get_posts', 'featured_category' );
Run Code Online (Sandbox Code Playgroud)
使用该set方法(它是WP_Query类的一部分)的正确方法是传递 2 个参数 - 一个查询参数键和一个查询参数值。所以你的第一个例子(代码 A)是正确的方法。
您可以在这里查看方法代码:https : //core.trac.wordpress.org/browser/tags/4.0/src/wp-includes/query.php#L2328
PS 如果要从查询中排除多个类别,请考虑使用category__not_in查询参数,例如:
$query->set( 'category__not_in', array(60, 61) );
Run Code Online (Sandbox Code Playgroud)
有关类别查询参数的更多信息,请查看http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters