我正在学习WP\\U查询,最近遇到了一个问题。
我需要做一个查询,首先通过一个或多个自定义字段进行过滤,这得益于meta\\u查询。
但是,我还需要它按多个自定义字段排序。
(就像在sql中一样,您可以编写“按字段ASC排序,按字段2描述排序”)
这就是我目前的情况:
$args=array(
\'post_type\' => \'personer\',
\'meta_query\' => array(
array(
\'key\' => \'p_seller\',
\'value\' => \'Y\',
\'compare\' => \'=\'
)
),
\'meta_key\' => \'p_region\',
\'orderby\' => \'meta_value\',
\'order\' => \'ASC\',
\'post_status\' => \'publish\',
\'posts_per_page\' => 999,
\'caller_get_posts\'=> 1
);
它返回p\\u seller设置为Y并按p\\u区域排序的行。我还想添加第二个orderby,在region之后按p\\u lastname排序。甚至更好-p\\u region,p\\u lastname,p\\u firstname。所有这些都是提升,但我想知道如何将ASC和DESC结合起来:)
我在google上搜索了一些内容,但大多数人似乎都在写关于过滤的多个字段,这是我得到的。或者,它们在自定义SQL查询中会留出空间,我希望我可以不使用这些查询:)
SO网友:George
$qry_args = array(
\'post_status\' => \'publish\',
\'post_type\' => \'event\', // Post type
\'posts_per_page\' => -1, // ALL posts
\'orderby\' => \'meta_value\',
\'meta_key\' => \'year\',
\'order\' => \'DESC\'
);
add_filter( \'posts_orderby\', \'filter_query\' );
$all_posts = new WP_Query( $qry_args );
remove_filter( \'posts_orderby\', \'filter_query\' );
function filter_query( $query ) {
$query .= \', post_modified DESC\';
return $query;
}
下面是一个有效的示例。上面的代码对所有事件类型的帖子进行排序:第一个是按年份排序的,第二个是按修改日期排序的,适用于同一年的帖子。
如果没有第二次排序,如果他们有相同的年份,他们将保持上升顺序。
p、 s.year是我添加到“Event”类型帖子的自定义字段
SO网友:Ramon Fincken
使用命名查询,例如https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters
$q = new WP_Query( array(
\'meta_query\' => array(
\'relation\' => \'AND\',
\'state_clause\' => array(
\'key\' => \'state\',
\'value\' => \'Wisconsin\',
),
\'city_clause\' => array(
\'key\' => \'city\',
\'compare\' => \'EXISTS\',
),
),
\'orderby\' => array(
\'city_clause\' => \'ASC\',
\'state_clause\' => \'DESC\',
),
));