循环后自定义字段的顺序

时间:2015-02-24 作者:Pedro Santos

我有一个表,每个帖子都有一个带有“region”和“city”的自定义字段:

圣保罗,里约热内卢,里约热内卢,坎皮纳斯,尼特罗伊这个查询非常适合显示“Region=SP”中的所有帖子:

query_posts( array(
     \'post_type\'     => \'hotel\',
     \'post_per_page\' => \'500\',
     \'meta_key\'      => \'hotel-region\',
     \'meta_value\'    => "sp")
);
圣保罗坎皮纳斯现在我需要订购城市A>Z的查询结果。如何更改代码?

2 个回复
最合适的回答,由SO网友:cybmeta 整理而成

地区和城市完全符合分类法的概念:一种对事物进行分组的方法(即帖子)。在元数据的概念上也没有那么多。我强烈建议对此使用自定义分类法,而不是自定义元字段。您将提高性能,并拥有更好的数据关系管理。此外,you should stop using query_posts and use WP_Query instead.

也就是说,如果仍要使用元字段,可以按元值对查询进行排序,如下所示:

$args = array(
     \'post_type\'     => \'hotel\',
     \'post_per_page\' => \'500\',
     //meta_key set for sorting only, for meta conditionals we will use meta_query parameter
     //Asumming the name of the meta field is hotel-city, replace with the correct name
     \'meta_key\'      => \'hotel-city\',
     \'orderby\'       => \'meta_value\',
     \'order\'         => \'ASC\',
     \'meta_query\'    => array(
         array(
             \'key\'   => \'hotel-region\',
             \'value\' => \'sp\'
         )
     )
);

$query = new WP_Query( $args );

SO网友:Przemek Maczewski

您可以尝试此操作,但强烈建议不要使用query\\u posts():

query_posts(
  array( 
    \'post_type\' => \'hotel\',
    \'post_per_page\' => \'500\',
    \'order\'     => \'ASC\',
    \'meta_key\' => \'hotel-city\',
    \'orderby\'   => \'meta_value\',
    \'meta_query\' => array(
                      array(\'key\' => \'hotel-region\',
                            \'value\' => \'sp\' 
                      )
                    )
  )
);
正如cybmeta所指出的,use WP_Query 相反

结束

相关推荐