按特定顺序对帖子进行排序

时间:2012-06-25 作者:Brad Farleigh

我有一个自定义的帖子类型,我希望能够通过定义数组中的顺序来控制帖子的显示顺序,然后对照数组检查posts meta\\u值,查看它在帖子顺序中的位置。

使用下面的代码,我可以得到经销商,他们的“Postcode”是距离当前用户位置最近的10个邮政编码的$target\\u邮政编码数组中定义的值之一。

$posts = get_posts(array(
        \'post_type\' => \'dealer\',
        \'meta_key\' => \'Postcode\',
        \'meta_value\' => $target_postcodes,
        \'post_status\' => \'publish\'
    ));
我是否可以按照“meta\\u values”查询中的值的顺序对帖子进行排序?

例如,如果我们使用以下post值:

[Name]    [Postcode]
Dealer 1  1234
Dealer 2  2345
Dealer 3  3456
Dealer 4  4567
然后将$target\\u邮政编码数组定义为

$target_postcodes = 4567,1234,3456,2345
然后我希望循环按以下顺序显示经销商

Dealer 4
Dealer 1
Dealer 3
Dealer 2
谢谢Brad

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

最后,我分别查询了每个邮政编码,然后使用array\\u merge将结果编译到$posts[]数组中。这意味着最后的$posts[]数组按距离顺序包含我的所有帖子,我可以正常循环浏览它。

我理解这是一种非常不完善的方法,如果有人能提供一些反馈/改进,我将不胜感激!

代码如下所示:

/** My array of postcodes, from closest to farthest**/
$postcodes[1111,2222,3333,4444,5555];

/**
 Loop through each postcode and grab all the dealers 
where the postcode matches the one in that loop
**/
foreach($postcodes as $the_postcode){
    $subSet = get_posts(array(
        \'post_type\' => \'dealer\',
        \'meta_key\' => \'Postcode\',
        \'meta_value\' => $the_postcode,
        \'post_status\' => \'publish\'
    ));
    /**
    Append the new results to the the end of the $posts array
    **/
    $posts = array_merge($posts,$currentSet);
}

/** Display final list of post titles in the order of values defined in $postcodes**/
if($posts)
{ 
    foreach($posts as $post)
    {
    echo the_title().\'<br />\';
    }
}

SO网友:Dakshinamurthy Karra

您应该能够使用自定义查询来实现这一点。这codex 示例可能有用。

结束

相关推荐

wp_nav_menu sort order?

嘿,伙计们,我正在尝试构建一个右对齐、包装功能良好的wp\\U nav\\U菜单供电菜单。有没有办法让它向后渲染,这样float:对;这样就行了,不会打乱秩序吗?我希望这样:<?php wp_nav_menu( array(\'sort_order\' => \'DESC\' )); ?> 谢谢!