WordPress 在默认情况下可以使用文章的一个自定义字段进行排序, 代码如下:

$args = array(
    'meta_key' => 'sort',
    'orderby'   => 'meta_value_num',  // 须 WordPress 2.8 及以上版本
    'order' => DESC
);
$arms = array_merge($args, $wp_query->query);

query_posts($arms);
while (have_posts())
//循环内容
endwhile;wp_reset_query();

但是有时候我们可能会碰到更加复杂的情况,需要对两个自定义字段进行组合排序,方法如下:

$query = "SELECT wposts.*, wpostmeta1.*, wpostmeta2.*
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta1, $wpdb->postmeta wpostmeta2
WHERE wposts.ID = wpostmeta1.post_id
AND wposts.ID = wpostmeta2.post_id
AND wpostmeta1.meta_key = 'date'
AND wpostmeta2.meta_key = 'time'
ORDER BY wpostmeta1.meta_value ASC,
         wpostmeta2.meta_value ASC";

$results = $wpdb->get_results($query);

foreach ( $results as $result ) {
         //循环内容
}