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 ) {
//迴圈內容
}