考虑到meta缓存在页面加载中,这样做应该是合理的(未测试):
usort( $wp_query->posts, function ( $post_a, $post_b ) {
$a = get_post_meta( $post_a->id, \'key\', true );
$b = get_post_meta( $post_b->id, \'key\', true );
if ( $a == $b ) {
return 0;
}
return ( $a < $b ) ? - 1 : 1;
} );
根据注释,在运行之前修改查询输入可能更合理。