这个WP_Query
具有名为meta_query
. 使用它可以按值或数值查询:
$car = new WP_Query( array(
\'post_type\' => array( \'cars\' ),
\'meta_key\' => \'car_number\',
\'orderby\' => \'meta_value_num\',
\'posts_per_page\' => 1,
\'order\' => \'DESC\',
\'cache_results\' => true,
) );
$carNr = get_post_meta( $car->ID, \'car_number\', true );
// Inspect result
var_dump( $carNr );
现在,我们得到了正确的post类型、适当的元键并定义了要按其值排序的内容,我们只需要将结果限制为单个post,并按降序排列。当我们现在得到这篇文章时,我们可以很容易地抓住它的元价值。
另一种选择是执行普通查询:
global $wpdb;
$wpdb->get_var(
"SELECT {$wpdb->postmeta}.meta_value
FROM {$wpdb->postmeta}
WHERE 1=1
AND {$wpdb->postmeta}.meta_key = \'car_number\'
ORDER BY ABS( {$wpdb->postmeta}.meta_value ) DESC
LIMIT 0,1"
);
根据保存值的方式(插件通常将数字/数字/整数保存为字符串),您可能需要在查询过程中转换值。在这种情况下,将订单按部分替换为
CAST( {$wpdb->postmeta}.meta_value as SIGNED INTEGER )
注意:如果没有负整数,可以使用
UNSIGNED
或
CONVERT( {$wpdb->postmeta}.meta_value, SIGNED INTEGER )