我有一个元框,其中“案例结果”CPT可以指定一个货币值(例如6000万美元)。我需要将其转换为十进制数,以用作meta_key
在里面WP_Query
.
我知道该怎么做(https://www.php.net/manual/en/function.number-format.php#89888), 但是想知道是否有一种合理的方法来获取“6000万美元”字符串并将其转换为“60000000”。
我当前的查询如下,它在多个“律师”页面上重新运行(因此$attorney_name
对于terms
) 显示他们负责的唯一案件。我想按货币价值降序排列这些帖子,但我知道当前的配置(meta_type
etc)将无法处理当前字符串状态中的值。任何建议都将不胜感激。
// Configure query
$query = new WP_Query( array(
\'posts_per_page\' => -1,
\'post_type\' => \'case-result\',
\'tax_query\' => array(
array (
// Filter CPT\'s to display by taxonomy
\'field\' => \'name\',
\'taxonomy\' => \'case-result-attorney\',
\'terms\' => $attorney_name,
)
),
// Sort CPT\'s by meta
\'meta_key\' => \'case_claim_value\',
\'meta_type\' => \'NUMERIC\',
\'order\' => \'DESC\',
\'orderby\' => \'meta_value_num\',
) );
SO网友:Tom J Nowell
对于十进制值,使用DECIMAL
正如官方所说WP_Query
文件:
‘meta_value‘
– 请注意‘meta_key=keyname‘
查询中也必须存在。还请注意,排序将按字母顺序进行,这对于字符串(即单词)来说是很好的,但对于数字(例如1、3、34、4、56、6等,而不是您自然期望的1、3、4、6、34、56等)来说可能是意外的。使用‘meta_value_num‘
而不是数值。您还可以指定‘meta_type‘
如果要将元值强制转换为特定类型。可能的值为‘NUMERIC’
, ‘BINARY’
, ‘CHAR’
, ‘DATE’
, ‘DATETIME’
, ‘DECIMAL’
, ‘SIGNED’
, ‘TIME’
, ‘UNSIGNED’
, 与中相同‘$meta_query‘
. 使用时‘meta_type’
您还可以使用‘meta_value_*’
照着例如,当使用DATETIME作为‘meta_type’
您可以使用‘meta_value_datetime’
定义订单结构。
https://developer.wordpress.org/reference/classes/wp_query/#order-orderby-parameters