我使用自定义字段“订单”订购我的帖子。
对于每个帖子,订单的价值是一个数字,它决定了我希望帖子的位置。
我有以下内容:
query_posts('category_name=category&meta_key=order&orderby=meta_value&order=ASC');
这似乎在第10个帖子之前工作正常,这个帖子在列表中排名第二。
关于我哪里出错的任何想法?
答案 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
";