我想根据帖子元和日期重新排序搜索结果。post元键是_prioritize_s
价值并不重要。因此,在“普通”元查询中,我只需编写compare
要检查的参数是否存在。虽然我有元查询的经验,但直到现在我还从未对搜索结果进行过重新排序,所以我非常感谢您的帮助。
This is how I\'d like to re-order the search results:
<检查帖子是否带有post meta_prioritize_s
存在于搜索结果中,如果存在,请按日期顺序(从最近到最旧)将其放在结果的顶部。显示这些帖子后,按默认顺序显示下面的其余搜索结果Updated Code from this sample
add_filter( \'posts_join\', \'modify_search_results_join\' );
add_filter( \'posts_orderby\', \'modify_search_results_order\', 10, 2 );
function modify_search_results_join( $orderby ) {
global $wpdb;
if ( ! is_admin() && is_search() ) {
$orderby .= "LEFT JOIN (
SELECT *
FROM $wpdb->postmeta
WHERE meta_key = \'_prioritize_s\' ) AS postmeta ON $wpdb->posts.ID = postmeta.post_id";
return $orderby;
}
return $orderby;
}
function modify_search_results_order( $orderby, $query ) {
global $wpdb;
//how do I order the results by _prioritize_s set to \'yes\'?
$orderby = "postmeta.meta_value+\'\' DESC";
return $orderby;
}