2012-12-28 133 views
3

我正在编辑使用自定义查询中的自定义字段的现有Wordpress主题。我需要编辑查询,以便结果由一个自定义字段过滤,并按第二个自定义字段排序。在Wordpress中,如何在查询中有多个自定义字段时按自定义字段排序?

这是我迄今为止尝试:

<?php 
$query_args = array(); 
$query_args['post_type'] = 'woo_estate'; 
$query_args['meta_query'] = array(
    array(
     'key' => 'on_show', 
     'value' => 'true' 
    ), 
    array(
     'key' => 'price', 
     'type' => 'numeric', 
    ) 
); 
$query_args['orderby'] = 'price'; 
$query_args['order'] = 'ASC'; 

$query_args['posts_per_page'] = $woo_options['woo_more_entries']; 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$query_args['paged'] = $paged; 

?> 
    <?php query_posts( $query_args); ?> 

的问题是,结果继续由默认值(日期)由price自定义字段排序代替。

如何通过自定义价格字段来订购此查询?

回答

2

在这里的文档中挖掘了一下之后:http://codex.wordpress.org/Class_Reference/WP_Query我能够想出完成我所需要的代码。

$query_args = array(); 
$query_args['post_type'] = 'woo_estate'; 
$query_args['meta_query'] = array(
    array(
     'key' => 'on_show', 
     'value' => 'true' 
    ) 
); 

$query_args['meta_key'] = 'price'; 
$query_args['orderby'] = 'meta_value_num'; 
$query_args['order'] = 'DESC'; 

$query_args['posts_per_page'] = $woo_options['woo_more_entries']; 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$query_args['paged'] = $paged; 

query_posts( $query_args) 
+0

+1很大贡献 –

+0

+1,对于你自己通过挖掘文档自己想出的问题,这个很好的答案。 –

2

要通过你有你的阵列中添加meta_keyorderbymeta_valuemeta_value_num数字,所以在这种情况下,它应该是meta_value_num,因为它是一个数字的自定义字段顺序。

$query_args['meta_key'] = 'price'; 
$query_args['orderby'] = 'meta_value_num'; 
$query_args['order'] = 'ASC'; 
$query_args['meta_query'] = array(
    array(
     'key' => 'on_show', 
     'value' => 'true' 
    ) 
); 
// ... 

Here is another answer,你也可以看看这个。