元查询未正确显示结果

时间:2018-10-04 作者:Deepak Singh Basnal

在wordpress帖子中,我有自定义的元字段(发货地点、保证金价格)。我想通过这些元字段过滤帖子。Ship from字段包含多个值(例如:产品可以从中国和美国发货)。当我选择中国时,查询工作正常,但当我选择美国时,查询工作不正常。

我正在试图找出query的问题所在。

查询如下:

$args = array(
   \'post_type\'  => \'post\',
   \'meta_query\' => array(
        array(
             \'key\'    => \'ship-from\',
             \'value\'  => \'usa\',
             \'compare\'=> \'in\'
        ),
        array(
             \'key\'       => \'profit-margin\',
             \'value\'     => array(0,100),
             \'meta_type\' => \'numeric\'
             \'compare\'   => \'BETWEEN\'
        )
   )
);

$result = new WP_Query($args);
以下是WP\\U query执行的最后一个查询:

SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  INNER JOIN 
wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id )  INNER JOIN 
wp_postmeta AS mt1 ON ( wp_posts.ID = mt1.post_id ) WHERE 1=1  AND ( 
( wp_postmeta.meta_key = \'ship-from\' AND wp_postmeta.meta_value IN 
(\'usa\') ) AND ( mt1.meta_key = \'profit-margin\' AND mt1.meta_value 
 BETWEEN \'0\' AND \'50\' ) ) AND wp_posts.post_type = \'post\' AND 
((wp_posts.post_status = \'publish\')) GROUP BY wp_posts.ID ORDER BY 
wp_posts.post_date DESC LIMIT 0, 12
如有任何意见,我们将不胜感激。

1 个回复
SO网友:Max Yudin

你失踪了relation 内部参数meta_query 阵列as described 在代码参考中。

此外,当您使用\'compare\'=> \'IN\', 这个\'ship-from\' 值应为数组。

$args = array(
   \'post_type\'  => \'post\',
   \'meta_query\' => array(
        \'relation\' => \'AND\', // note this!
        array(
             \'key\'    => \'ship-from\',
             \'value\'  => \'usa\',
             \'compare\'=> \'IN\' 
        ),
        array(
             \'key\'       => \'profit-margin\',
             \'value\'     => array(0,100),
             \'meta_type\' => \'numeric\'
             \'compare\'   => \'BETWEEN\'
        )
   )
);

结束

相关推荐

如何在WooCommerce变体产品中回放一段PHP代码?

我有一点复杂的解释问题,我希望有人能理解和帮助我。我在WooCommerce上设置了自定义字段,用于输入每个产品的特定代码(类似于SKU,称为“asin”),然后我在后端使用亚马逊API从亚马逊的产品页面获取价格(别担心,我的问题是一般性的,与API无关)。下面是我的简单产品类型代码示例,它的工作方式与我所需要的完全一样。<?php //This is the code i use to get the \"asin\" value from custom fields.