2017-02-21 51 views
1

我试图订购wp_query,其中包括一个meta_query ...
经过一些不同的方法,似乎查询无法排序,因为我包括meta_queryorderby => ID默认使用(我认为),它不能被覆盖。任何想法如何实现这一目标?
这里的PHP代码我只使用由meta值显示帖子:WP_查询订单的自定义元值,然后通过修改订购

$paged = get_query_var('paged') ? get_query_var('paged') : (get_query_var('page') ? get_query_var('page') : 1); 
$args = array(
    'post_type' => 'post', 
    'post_status' => 'publish', 
    'paged' => $paged, 
    'meta_query' => array(
     array(
      'key' => 'subtitrare', 
      'value' => 'romana', 
      'compare' => 'LIKE' 
     ) 
    ) 
); 

$listing_query = null; 
$listing_query = new WP_Query($args); 
if ($listing_query->have_posts()) : get_template_part('loop-item'); 
endif; 
wp_reset_postdata(); 

正如你可以看到我也分页的结果,这样我就可以使用相同的$args。我试图使用自定义函数来重新排列结果,但它不适合我。

+2

你想要订购什么? –

+0

尝试orderby - >修改没有成功。所以我想通过修改日期来对它进行排序DESC –

+0

我会重写一下它。我想在wp_post的post_modified后重新排列结果。因此,它们首先使用默认的meta_id由meta_value进行排列,并通过post_modified重新排列结果。 –

回答

0
$args = array(
    'post_type' => 'post', 
    'post_status' => 'publish', 
    'paged' => $paged, 
    'orderby' => 'modified', 
    'order' => 'DESC', 
    'meta_query' => array(
     array(
      'key' => 'subtitrare', 
      'value' => 'romana', 
      'compare' => 'LIKE' 
     ) 
    ) 
); 

这是你需要的代码,但你已经说过你试过这个。这将返回所有具有自定义字段值设置为LIKE'romana'的帖子。你使用这段代码得到的结果是什么?

+0

这是我试过的第一个。相信我:) ...问题是,由于meta_query,查询忽略了这个命令...默认情况下,meta_query是由meta_id(我认为)安排,所以如果你把另一个'orderby'放在查询...这需要另一种方法,如“存储”或任何第一个查询,并在post_modified后重新排列它。显然你的建议没有奏效,虽然我第一次尝试了,但我现在再次尝试并保持不变。 –