将字符串转换为十进制数以在查询中使用

时间:2020-02-02 作者:Graeme Bryson

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

1 个回复
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

相关推荐

JQuery未调用php函数

我似乎无法让jquery在插件中调用php处理函数。请帮忙。TQ公司更新:我更新了代码。它现在正在工作。我的php文件// INIT function nizam_scripts() { wp_enqueue_script( \'nizam_ajax\', plugin_dir_url( __FILE__ ) . \'/nizam_plugin.js\', array( \'jquery\' ) ); wp_localize_script(\'nizam_ajax\