我有一个元框,其中“案例结果”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