按倍数 meta_keys 排序,然后按 date_modified 排序
orderby multiple meta_keys and then orderby date_modified
为每个天赋创建一个 post,状态为 coming-soon
或 in-town
或 others
保存为 meta_values
。我需要先显示 posts "coming-soon" 然后 "intown" 然后 "others".
我意识到我在寻找 orderby multiple meta_keys 并找到了一个 solution here。我转换了语法以使其与 pre_get_posts
挂钩一起使用(因为它是 category.php 中的主循环)。根据我的需要,下面的代码大部分工作并显示按 coming-soon->in-town->others
排序的结果。
add_filter('pre_get_posts', 'pre_get_posts_hook' );
function pre_get_posts_hook($wp_query) {
if (is_category() && $wp_query->is_main_query()) {
$wp_query->set('meta_query',
array( 'relation' => 'OR',
'soon' => array( 'key' => 'coming_soon',
'value' => 'yes',
'compare' => '='
),
town' => array( 'key' => 'in-town',
'value' => 'positive',
'compare' => '='
),
'others' => array( 'key' => 'others',
'value' => 'null',
'compare' => '='
)
)
);
$wp_query->set('orderby', array('soon' => 'DESC', 'town' => 'DESC', 'others' => 'DESC'));
return $wp_query;
}
}
现在,我需要 运行 二级 orderby。我的意思是,使用上面的代码,首先我用 meta_key coming-soon
得到 posts,我希望这些 posts 再次成为 由 date_modified
订购,并且可能对其订单进行控制,例如。升序,降序。我很确定这是可能的。我只是不知道如何进一步嵌套它。
已解决。我会留下答案,以防将来对某人有所帮助。我不得不更换这条线。
$wp_query->set('orderby', array('soon' => 'DESC', 'town' => 'DESC', 'others' => 'DESC'));
用这条线。
$wp_query->set('orderby', array('meta_value' => 'DESC', 'modified' => 'DESC' ));
我认为代码很漂亮 self-explanatory。它的作用是,它将允许您 运行 您 primary-orderby 然后一旦您获得这些结果,您就可以 运行 一个 secondar-orderby。当然,第二个关联数组不限于modified
,可以是任何其他的parameters of orderby。例如。标题、作者等
为每个天赋创建一个 post,状态为 coming-soon
或 in-town
或 others
保存为 meta_values
。我需要先显示 posts "coming-soon" 然后 "intown" 然后 "others".
我意识到我在寻找 orderby multiple meta_keys 并找到了一个 solution here。我转换了语法以使其与 pre_get_posts
挂钩一起使用(因为它是 category.php 中的主循环)。根据我的需要,下面的代码大部分工作并显示按 coming-soon->in-town->others
排序的结果。
add_filter('pre_get_posts', 'pre_get_posts_hook' );
function pre_get_posts_hook($wp_query) {
if (is_category() && $wp_query->is_main_query()) {
$wp_query->set('meta_query',
array( 'relation' => 'OR',
'soon' => array( 'key' => 'coming_soon',
'value' => 'yes',
'compare' => '='
),
town' => array( 'key' => 'in-town',
'value' => 'positive',
'compare' => '='
),
'others' => array( 'key' => 'others',
'value' => 'null',
'compare' => '='
)
)
);
$wp_query->set('orderby', array('soon' => 'DESC', 'town' => 'DESC', 'others' => 'DESC'));
return $wp_query;
}
}
现在,我需要 运行 二级 orderby。我的意思是,使用上面的代码,首先我用 meta_key coming-soon
得到 posts,我希望这些 posts 再次成为 由 date_modified
订购,并且可能对其订单进行控制,例如。升序,降序。我很确定这是可能的。我只是不知道如何进一步嵌套它。
已解决。我会留下答案,以防将来对某人有所帮助。我不得不更换这条线。
$wp_query->set('orderby', array('soon' => 'DESC', 'town' => 'DESC', 'others' => 'DESC'));
用这条线。
$wp_query->set('orderby', array('meta_value' => 'DESC', 'modified' => 'DESC' ));
我认为代码很漂亮 self-explanatory。它的作用是,它将允许您 运行 您 primary-orderby 然后一旦您获得这些结果,您就可以 运行 一个 secondar-orderby。当然,第二个关联数组不限于modified
,可以是任何其他的parameters of orderby。例如。标题、作者等