针对页面结果排序的需求不少,自行客制化页面的排序都是看当下怎么写。 至于其他系统页面像是「搜索结果页」就有两种做法:
- 接手自己写过(继承页面)
- 套 Hook 机制控制
这答案对我来说肯定是 2 ,套过 Hook 来处理就好。 避免把页面继承过来重新改写这么复杂!
主要是使用posts_orderby
这个 Filter。
演示例如下:
function mxp_custom_search_results_order( $orderby, $query ){
global $wpdb;
if(is_search()){
$orderby = "{$wpdb->prefix}posts.post_date DESC";
}
return $orderby;
}
add_filter('posts_orderby','mxp_custom_search_results_order',11,2);
如此把搜索页面的排序结果调整一下就搞定啰!