如何将多个WordPress的自定义字段值进行排序?(How to sort multiple wo

2019-08-01 02:22发布

显示文章由“价格”自定义字段排序“产品”类型:

$query = new WP_Query( 
                      array ( 'post_type' => 'product', 
                              'orderby' => 'meta_value', 
                              'meta_key' => 'price' ) 
                     );

哪个代码我应该使用,如果还希望通过“大小”命令?

关于这一点我需要的自定义字段多个排序又如

显示文章由“START_HOUR”排序,然后按“START_MINUTE”事件类型。

Answer 1:

由于Bainternet我找到了解决办法:

function orderbyreplace($orderby) {
    return str_replace('menu_order', 'mt1.meta_value, mt2.meta_value', $orderby);
}

和...

$args = array(
  'post_type'=>'Events',
  'orderby' => 'menu_order',
  'order' => 'ASC',
  'meta_query' => array(
        array(
            'key' => 'Start_Hour',
            'value' => '',
            'compare' => 'LIKE'
        ),
        array(
            'key' => 'Start_Minute',
            'value' => '',
            'compare' => 'LIKE'
        )
    )
);

add_filter('posts_orderby','orderbyreplace');
$loop = new WP_Query( $args );
remove_filter('posts_orderby','orderbyreplace');


Answer 2:

我想,这在WordPress的3.7略有改变。

我不得不改变

return str_replace('menu_order', 'mt2.meta_value, mt1.meta_value', $orderby);

return str_replace('wp_posts.menu_order', 'mt2.meta_value, mt1.meta_value', $orderby);

感谢您最初的解决方案! 将帖子



Answer 3:

下面是使用一个以上的meta_key和排序依据,我认为应该工作的一个例子:

$params = array(
'post_type' => 'product',
'meta_query' => array(
    array(
            'key' => 'price',
            'value' => '',
            'compare' => 'LIKE'
    ),
    array(
            'key' => 'size',
            'value' => '',
            'compare' => 'LIKE'
    )
),
'orderby' => 'price size',
'order' => 'ASC'
);
$query = new WP_Query;
$resulting_obj = $query->query($params);

你需要与meta_query项目多一点,尤其是“值”参数玩。 请有在好好看看http://codex.wordpress.org/Class_Reference/WP_Query在“自定义字段参数”部分。



Answer 4:

你不需要任何过滤器或钩到多个自定义字段进行排序,如果自定义的一个领域是meta_key和另一种是表的正常列,比在查询中使用这些参数/参数。

'meta_key' => 'KEY_NAME',
'orderby' => 'meta_value_num SECOND_COLUMN_NAME',
'order' => 'ASC' or 'order' => 'DESC'

这里的秩序meta_value_numSECOND_COLUMN_NAME的事情,你可能会看到基于该顺序不同-2的结果。



文章来源: How to sort multiple wordpress custom field values?