Wordpress自定义帖子排序问题

时间:2010-07-30 10:39:31

标签: wordpress

我使用自定义字段“订单”订购我的帖子。

对于每个帖子,订单的价值是一个数字,它决定了我希望帖子的位置。

我有以下内容:

query_posts('category_name=category&meta_key=order&orderby=meta_value&order=ASC');

这似乎在第10个帖子之前工作正常,这个帖子在列表中排名第二。

关于我哪里出错的任何想法?

3 个答案:

答案 0 :(得分:1)

WordPress将值视为要排序的字符串,因此10在1之后,只需更改

orderby=meta_value

to(值将被视为数字)

orderby=meta_value_num

按数字排序时,使用meta_value_num而不是meta_value使WordPress将值作为数字而不是字符串。

我遇到了同样的问题,Sheikh Heera帮助了我,它就像一个魅力。

答案 1 :(得分:0)

好的,在其他地方找到了答案。

因为自定义字段值是字母而不是数字。您必须在01,02,03 ... 10,11

开始订购

而不是1,2,3 ...... 10,11

答案 2 :(得分:0)

另一种选择是创建一个custom query string,在ORDER BY子句中将字母自定义字段转换为小数:

$querystr = "
    SELECT wposts.*
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
    WHERE wposts.ID = wpostmeta.post_id
    AND wpostmeta.meta_key = 'your-custom-field-name' 
    AND wposts.post_type = 'post'
    ORDER BY CAST(wpostmeta.meta_value AS DECIMAL) DESC
";