如果我有自定义帖子类型(post_type
),并且我想保证任何帖子类型为product
的帖子出现在搜索结果中的其他任何内容之前,我怎么能实现这一点?最好通过改变查询的部分order by
。通过查询MYSQL订单
目前我有:
ORDER BY posts.post_type DESC, posts.post_date DESC
这工作,但另一篇文章类型testimonial
来product
上DESC
之前。在ASC
不同的自定义帖子类型articles
之前product
但我需要product
先来(与他们订购post_date
),然后一切 - 也排序post_date
。
的完整代码:
add_filter('posts_orderby','search_sort_custom',10,2);
function search_sort_custom($orderby, $query)
{
global $wpdb;
if(!is_admin() && is_search()) {
$orderby = $wpdb->prefix."posts.post_type DESC, {$wpdb->prefix}posts.post_date DESC";
}
return $orderby;
}
谢谢,我能做到! post_type = '产品' DESC, posts.post_type = '产品' DESC, posts.post_date DESC – Martin 2014-09-22 22:23:51
抱歉,您仍然是保持分组的旧表达式。请参阅更新。比较结果返回1或0(真/假),所以你的建议与我原来的一样。 – Arth 2014-09-22 22:32:25
Thanks Arth ...因此,这将返回由post_date DESC首先订购的所有产品,以及由post_date DESC订购的所有其他产品(混合在一起)。如果是这样,真棒,因为这是我所追求的。 – Martin 2014-09-22 22:46:46