【问题标题】:Not the usual WordPress 'NOT EXISTS' meta query不是通常的 WordPress“不存在”元查询
【发布时间】:2014-12-17 15:43:52
【问题描述】:

我遇到了一个问题,如果特定帖子上根本没有元数据,则“不存在”元查询无法按预期工作。比如……

add_filter('pre_get_posts' , 'my_pre_get_posts' );
function my_pre_get_posts($query) {
    $query->set('meta_query', array(
        'relation' => 'OR',
            array(
                'key' => 'mymetakey', 
                'value' => '', 
                'compare' => 'NOT EXISTS'
            ),
            array(
                'key' => 'mymetakey',
                'value' => '1', 
                'compare' => '!='
            ),
        )
    );
}

当帖子具有一些元数据时,这可以正常工作。任何其他元数据。由于“_edit_lock”元数据,只需点击编辑器即可解决此问题。但是,自动生成的 woocommerce 页面没有此功能,而且开箱即用 - 此查询不起作用。

大概这是表连接工作方式的一个特点。任何人都知道一个好的解决方法 - 除了在每个帖子中写入一些虚拟元数据。

【问题讨论】:

  • 你用的是什么版本的WP?
  • 这是在 4.0 上看到的。我已经看到 4.1 中有元查询增强功能,但我还没有测试过。
  • 这是similar question。我要求该版本的原因是 Codex 中的以下注释:“由于错误 #23268,在 3.9 之前,NOT EXISTS 比较需要 value 才能正常工作。您必须为 value 参数提供一些字符串。空字符串或NULL 不起作用。但是,任何其他字符串都可以解决问题,并且在使用 NOT EXISTS 时不会出现在您的 SQL 中。需要灵感吗?'bug #23268'怎么样。"
  • 是的 - 这是我找到大量答案的问题。空字符串在“不存在”上工作正常。这似乎已在最近发布的 WordPress 4.1 (yey) 中得到修复
  • 很高兴听到它解决了 ;-)

标签: mysql wordpress woocommerce


【解决方案1】:

升级到 WordPress 4.1 后问题就消失了。我应该等 1 天才能发布!

【讨论】:

    猜你喜欢
    • 2018-08-08
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多