列出多个$query->set的正确方法是什么?我是否可以拥有多个$query->set
,如下面的"代码A"
还是我应该把它们组合成一个?如果是,您将如何组合三个$query->set
代码?我试着在下面的"代码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' );
代码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' );
使用set
方法(它是WP_Query
类的一部分)的正确方法是传递两个参数-一个查询参数键和一个查询参数值。所以你的第一个例子(代码A)是正确的方法
您可以在此处查看方法代码:https://core.trac.wordpress.org/browser/tags/4.0/src/wp-includes/query.php#L2328
p.S。如果要从查询中排除多个类别,请考虑使用category__not_in
查询参数,例如:
$query->set( 'category__not_in', array(60, 61) );
有关类别查询参数的详细信息,请查看http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters
或者,为了获得更优雅简洁的方法。你可以将它们分组成一个数组,然后循环遍历它们。
<?php
$query_vars = array(
'post_type' => 'question',
'post_status' => 'publish',
'posts_per_page' => 1,
'posts_per_archive_page' => 1,
'orderby' => 'rand(' . get_query_var( 'docket' ) . ')',
);
foreach ( $query_vars as $key => $value ) {
$wp_query->set( $key, $value );
};