WordPress:OrderBY meta_key_value包括空值

时间:2015-04-23 09:48:46

标签: php wordpress sql-order-by wp-query

我正在尝试在自定义字段的meta_value_num排序的wordpress中进行简单查询。

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

我想在查询中包含自定义字段为空的帖子或者在查询中排在第一位或最后一位的空格。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分: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
);