2015-04-23 49 views
1

我想在wordpress中自定义字段的meta_value_num排序一个简单的查询。WordPress的:OrderBY meta_key_value包括空值

$args1 = array(
'post_type'   => 'task', 
'post_status'  => 'publish', 
'meta_key'   => 'task_due_date', 
'orderby'   => 'meta_value_num', 
'order'    => ASC, 
'posts_per_page' => -1,                
); 

我想包括具有自定义字段为空或空的查询中首先或最后排序的帖子。我怎样才能做到这一点?

+0

是我的答案[这里](HTTP:// stackoverflow.com/a/11316027/1714)有什么帮助? – Hobo

回答

0

一种简单快捷的解决方案:

<?php 
setup_postdata($GLOBALS['post'] =& $post); 

$posts= get_posts(array(
    'post_type'   => 'task', 
    'post_status'  => 'publish', 
    'meta_key'   => 'task_due_date', 
    'orderby'   => 'meta_value_num', 
    'order'    => ASC, 
    'posts_per_page' => -1,                
    )); 

if($posts): 
    foreach($posts as $post): ?>  

    <!-- HTML HERE --> 

    <?php endforeach; 
    wp_reset_postdata(); 
endif; ?> 
?> 

如果你想生成的SQL只是把它传递给WP_Meta_Query对象:

$query_args = array(
    'post_type'   => 'task', 
    'post_status'  => 'publish', 
    'meta_key'   => 'task_due_date', 
    'orderby'   => 'meta_value_num', 
    'order'    => ASC, 
    'posts_per_page' => -1,                
    ); 

$meta_query = new WP_Meta_Query(); 
$meta_query->parse_query_vars($query_args); 
$res = $meta_query->get_sql(
    'task', 
    $wpdb->posts, 
    'ID', 
    null 
);