按多个元值对帖子进行排序

时间:2013-02-11 作者:Mark Rapp

1) 名为“Buying\\u Locations”的自定义帖子类型

2) 每个帖子有三个元值:State、City、Store Name

QUESTION: 如何显示这些帖子的列表,按字母顺序依次为州、市和商店名称?例如

STATE 1

<城市1

门店名称城市2

门店名称城市3

商店名称

STATE 2

<城市1

门店名称城市2

商店名称

STATE 3

<城市1

门店名称城市2

门店名称城市3

商店名称我进一步了解了这一点:

$mypost = array( 
\'post_type\' => \'buy_locations\', 
\'posts_per_page\' => -1, 
\'meta_key\' => \'store_city\', 
\'orderby\' => \'meta_value title\', 
\'order\' => \'ASC\' 
); 
$loop = new WP_Query( $mypost ); 
只需要弄清楚如何先按州排序,然后按城市排序,然后按头衔排序。

不确定如何添加额外的“meta\\u key”值。

如何添加第三个排序请求?

$mypost = array( 
    \'post_type\' => \'buy_locations\', 
    \'posts_per_page\' => -1, 
    \'meta_key1\' => \'store_state\', 
    \'meta_key2\' => \'store_city\', 
    \'orderby\' => \'meta_value1 meta_value2 title\', 
    \'order\' => \'ASC\' 
    ); 

2 个回复
SO网友:Jamie

我还没有检查过这个,但快速查看一下法典,就会发现您的查询应该只包括\'Orderby\' => \'state city name\'

SO网友:Mark Rapp

由于我找不到获取自定义帖子标题并通过meta\\u键将其添加到排序/排序中的方法,我编辑了我的自定义帖子类型,以包含一个隐藏字段,该字段可以获取帖子标题,并在用户添加新的自定义帖子时将其设置为自定义元值。因此,在我的自定义帖子类型插件中,我有:

<input type="hidden" name="buy_location_name" value="<?php echo get_the_title($buy_location->ID); ?>" />

if ( isset( $_POST[\'buy_location_name\'] ) && $_POST[\'buy_location_name\'] != \'\' ) 
 { update_post_meta( $buy_location_id, \'location_name\', get_the_title($buy_location_id) ); }
然后,在按州、市和最终商店名称排序的结果发布的前端页面上,我使用以下URL中的示例代码:http://wordpress.mcdspot.com/2012/10/24/sort-posts-on-multiple-custom-fields/

我的代码是这样开始的。。。

$meta_keys = array(\'store_state\',\'store_city\',\'location_name\');
$args = array(
    \'post_type\' => \'buy_locations\',
    \'meta_key\' => $meta_keys[0],
    \'orderby\' => \'meta_value\',
    \'posts_per_page\' => -1);
$my_query = new WP_Query($args);
之后,以。。。

usort($my_query->posts, \'sort_3_keys\');
while ( $my_query->have_posts() ) : $my_query->the_post();
$id = $post->ID;
$storestate = $id_array[$id][$meta_keys[0]];
$storecity = $id_array[$id][$meta_keys[1]];
$storename = $id_array[$id][$meta_keys[2]];
echo "$storestate | $storecity | $storename <br />";
endwhile;
总之,开发此代码的cat(http://wordpress.mcdspot.com/2012/10/24/sort-posts-on-multiple-custom-fields/), 是一个糟糕的穆塔,我很感谢他的工作和他分享。这帮助我实现了我所需要的结果。干杯

结束

相关推荐

Sorting by tag or category

以下是场景:用户单击一个标签,该标签会将他们带到所有带有该标签的帖子的列表。有数百篇帖子,因此用户需要一种方法来过滤这些帖子。问题是:如何构建一个下拉列表,用户可以在标记页面上选择按类别进行筛选。例如,按颜色类别过滤所有黄色标记。反之亦然。搜索颜色类别并按黄色标记过滤。