我正在使用WP_Query查询列表(自定义帖子类型),并通过ACF元字段对结果进行排序。该字段包含带有货币符号和逗号分隔的价格值,例如$ 100,000。
这是我要传递给 WP_Query 的 $ args 。
$args = array(
'post_type' => 'listing',
'post_status' => 'publish',
'posts_per_page' => -1,
'meta_key' => '_listing_price',
'orderby' => 'meta_value',
'order' => 'ASC'
);
$listing_query = new WP_Query($args);
结果:
$0 $0 $100,000 $150,000 $22,000 $320,300 $33,000 $359,000.
但是我需要这样的结果:
$0 $0 $22,000 $33,000 $100,000 $150,000 $320,300 $359,000.
答案 0 :(得分:0)
理想情况下,您将只存储整数(或浮点)值,例如:0
,0
,22000
,323000
等。这将允许您可以在以后添加所需的任何货币符号和格式,从而简化排序和操作。
因此,首先,您应该评估您是否可以通过并执行该操作(这可能值得您花费一段时间)。
除非如此,否则您可以尝试使用meta_value_num
Orderby Parameter:
$args = array(
'post_type' => 'listing',
'post_status' => 'publish',
'posts_per_page' => -1,
'meta_key' => '_listing_price',
'orderby' => 'meta_value_num',
'order' => 'ASC'
);
$listing_query = new WP_Query($args);
但是我不确定它是否会起作用。消息来源显示它在元查询别名中添加了+0
,但没有进行其他转换-因此我不确定它如何处理美元符号,逗号和其他字符。
第三个选择是像现在一样获得结果,然后遍历它们并根据元值手动对它们重新排序。对于少数几个列表,它不会增加大量的开销,但是我会以任何规模避免这种方法。