2012-07-09 117 views
1

我添加了一个代码,允许我按自定义字段对WordPress帖子进行排序。我试图通过价格排序的职位,但它是由第一个数字排序,而不是价值:通过数字自定义字段排序WordPress帖子

$116.99 
$12.95 
$149.00 
$15.99 

相反的:

$12.95 
$15.99 
$116.99 
$149.00 

我怎样才能得到它来正确地分类?

下面的代码:http://pastebin.com/Pe5yfvrE

我把它从这个讨论,但问题未得到解决那里..

http://wordpress.org/support/topic/sort-posts-by-custom-field-in-backend

+0

WordPress不会让你把数字存储为数字吗? – 2012-07-09 21:21:52

回答

0

我还没有看看你的代码,但你这与你的情况中的字符串有关。如果你排序一个字符串,它就像你描述的那样排序。为了按照它的值对它进行排序,您需要删除$标志并将其转换为数字。

3

如果你想这样做手工(虽然引用WP_Query是更好的选择的答案),相当不错的治疗可能会使用array_multisort

$arr = array(
    '$116.99', 
    '$12.95', 
    '$149.00', 
    '$15.99' 
); 

$keys = array(); 

foreach ($arr as $value) { 
    $keys[] = floatval(substr($value, 1)); 
} 

array_multisort($keys, SORT_ASC, $arr); 
0
function order($a, $b) {return intval($b) - intval($a);} 
uasort($array, 'order'); 

我不知道能帮助你;)

相关问题