如何比较两个元字段

时间:2014-10-10 作者:Sisir

考虑两个元字段balancemonthly_price. 你将如何获得所有balance < monthly_price

正在考虑创建元查询,但这两个字段都是任意的,或者没有特定的值。

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

粗略的方法是设置balance\'mt1.meta_value\' 然后使用\'posts_request\' 筛选以删除转义引号:

$args = array(
  \'post_type\' => \'post\', // maybe not
  \'meta_query\' => array(
    array(
      \'key\' => \'balance\',
      \'compare\' => \'>=\',
      \'value\' => \'mt1.meta_value\', // this will be treated as a string
      \'type\' => \'NUMERIC\'
    ),
    // this is to force adding the needed JOIN clause
    array(
      \'key\' => \'monthly_price\', 
      \'compare\' => \'EXISTS\' 
    ),
    \'relation\' => \'AND\'
  )
);

$closure = function( $sql ) {
  // remove single quotes around \'mt1.meta_value\'
  return str_replace( "\'mt1.meta_value\'", "mt1.meta_value", $sql );
};

add_filter( \'posts_request\', $closure );

$query = new \\WP_Query( $args ); // this is your query :)

remove_filter( \'posts_request\', spl_object_hash( $closure ) );
我应该补充一下\'mt1.meta_value\' 因为WordPress在参数中有多个元查询时会使用如下表别名"mt{$n}" 哪里$n 对于每个附加查询,都会递增。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post