【问题标题】:Defining correct WP query and meta query定义正确的 WP 查询和元查询
【发布时间】:2011-12-25 11:42:45
【问题描述】:

我有一个自定义帖子类型的列表,我正在尝试在它上面实现一个搜索表单。搜索表单将简单地推送将被同一页面捕获的 url 查询,并且根据这些查询(例如 name=".."、order=".." 等),自定义帖子类型的列表将表示这些特点。

我特别坚持实现 WP_Query 的参数,这将允许我搜索每个自定义帖子类型的元数据。这是我的 $args 字符串的结构(由 print_r 调用 - 这不会显示我使用的确切语法,因为它混合了相当多的逻辑,但这很好地了解了我的参数是如何解释的):

[post_type] => obituary
[post_per_page] => 25
[meta_query] => Array
    (
        [relation] => OR
        [0] => Array
            (
                [meta_key] => last_name
                [meta_value] => Green
            )

        [1] => Array
            (
                [meta_key] => first_name
                [meta_value] => Green
            )

    )

如果我删除键数组[meta_query][0](因此定义值的数组看起来像 last_name(因此只在一个元数据键下查找),那么查询将正常工作。我想添加关系键和 value OR 能够找到 meta_value 是 last_name OR first_name 元键。但是,这似乎不起作用,查询仍然返回自定义帖子类型的完整列表。

由于我是新手,有什么我遗漏的东西吗?我浏览了我能找到的文档,这个,imo,应该可以工作。

你有什么想法?

编辑:对上述内容的更正:仅在一个 meta_key 下搜索只有在 meta_query 之外定义时才有效。

【问题讨论】:

    标签: php wordpress metadata


    【解决方案1】:

    想通了。正确的结构如下:

    (
        [post_type] => obituary
        [post_per_page] => 25
        [meta_query] => Array
            (
                [relation] => OR
                [0] => Array
                    (
                        [key] => last_name
                        [value] => Green
                        [compare] => LIKE
                    )
    
                [1] => Array
                    (
                        [mkey] => first_name
                        [value] => Green
                        [compare] => LIKE
                    )
    
            )
    
    )
    

    主要区别在于 meta_key 和 meta_value 在 meta_query 数组中被称为 key 和 value。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      相关资源
      最近更新 更多