WP_QUERY META_KEY为文本值,需要按数值不起作用进行排序

时间:2014-08-21 作者:user949509

我在~WP\\u查询“”中有以下代码。

$args[ \'meta_key\'] = \'price\';
$args[\'orderby\'] = \'meta_value meta_value_num\';
$args[\'order\'] = \'ASC\';
所涉及的自定义字段具有在自定义字段中创建并设置为文本的历史数据。运行查询时,我得到以下结果:

1199.00、1299.99、169.99、379.95。

看起来是正确的alpha排序。但是,较高的数字应最后出现,较低的值应首先出现。我试图将自定义字段调整为数字,但丢失了自定义字段数据。

是否有人建议我如何重写查询或将文本自定义字段数据转换为数字数据?

1 个回复
SO网友:indextwo

A.meta_value 字段始终为文本;数据库结构中的字段类型为longtext, 因此,除非您在检索时显式地进行类型转换(即。$price = (float)$custom[\'price\'][0]; - 这首先无助于排序),您无法“调整”自定义字段数据-它始终存储为文本。

话虽如此,您只需删除首字母meta_value 在您的orderby 参数:

$args[\'meta_key\'] = \'price\';
$args[\'orderby\'] = \'meta_value_num\';
$args[\'order\'] = \'ASC\';
就在昨天,我使用了这个确切的论点,它非常有效。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post