如果META_QUERY具有7个以上的值,则WP_QUERY返回空

时间:2016-05-19 作者:Ahmar Ali

我有一个自定义循环来显示自定义帖子类型\'properties\' . 其思想是根据用户选择的不同搜索参数来搜索属性。现在我面临的奇怪问题是,如果搜索参数的数量增加到7,那么WP\\u查询根本不会返回任何结果。

具有这些搜索参数的属性存在于WP后端。如果我删除任何一个搜索参数使其小于7,则会显示结果。但一旦参数数量增加,它将不会显示任何结果。

我做错了什么?

以下是元查询数组:

(
[0] => Array
    (
        [key] => payment_status
        [value] => yes
    )

[1] => Array
    (
        [key] => expired
        [value] => no
    )

[2] => Array
    (
        [key] => listing_type
        [meta_value_num] => Array
            (
                [0] => 1
                [1] => 2
                [2] => 3
            )

    )

[3] => Array
    (
        [key] => available_for
        [value] => sale
    )

[4] => Array
    (
        [key] => country
        [value] => Saudi Arabia
    )

[5] => Array
    (
        [key] => city
        [value] => Riyadh
    )

[6] => Array
    (
        [key] => property_type
        [value] => land
    )

[7] => Array
    (
        [key] => by
        [value] => owner
    )
()

正如我所说,如果删除任何参数,结果将显示出来。这是我的WP_Query 作用

$loop = new WP_Query( 
                                        array( 
                                              \'post_type\' => \'properties\', 
                                              \'posts_per_page\' => (int)get_field(ICL_LANGUAGE_CODE.\'_search_results_per_page\',get_active_lang_id()),
                                                \'meta_query\' => $meta_query,
                                                \'orderby\' => \'date\',
                                                \'order\' => \'DESC\' ,
                                                \'paged\' =>$paged
                                              )); 
这是一个已知的问题吗WP_Query 它不会显示带有大meta_query 设置

任何帮助都将不胜感激

艾哈迈尔

3 个回复
SO网友:Karthikeyani Srijish

我认为您的一个查询不符合条件。您已删除哪个条件以运行查询?“所有者”的最后一个条件?如果是,请尝试以下操作meta_query

如果条件有问题,请更改查询的关系ANDOR 和检查(Refer). 还要回显查询并在PHPMyAdmin中运行,以确保查询没有错误。

$meta_query = array(
        array(
            \'key\'     => \'payment_status\',
            \'value\'   => \'yes\',
        ),
array(
            \'key\'     => \'expired\',
            \'value\'   => \'no\',
        ),
array(
            \'key\'     => \'listing_type\',
            \'meta_value_num\'   => array(1,2,3),
        ),
array(
            \'key\'     => \'available_for\',
            \'value\'   => \'sale\',
        ),
array(
            \'key\'     => \'country\',
            \'value\'   => \'Saudi Arabia\',
        ),
array(
            \'key\'     => \'city\',
            \'value\'   => \'Riyadh\',
        ),
array(
            \'key\'     => \'property_type\',
            \'value\'   => \'land\',
        ),
                array(
                        \'relation\' => \'OR\',
                        array(
                                \'key\' => \'by\',
                                \'value\' => \'owner\',
                        ),
        ),
);

SO网友:HU ist Sebastian

添加到其他答案(尝试直接在PHPMyAdmin中检查),请检查是否可以简化查询。如果您执行了这么多Meta\\u查询,那么每个Meta字段上都会连接posteta表,这很容易使您的MySQL服务器负担过重(我自己也有这个问题)。

如果您需要一次完成这么多meta\\u字段查询,您可以尝试进行单独的调用,并将找到的post\\u id插入到主查询中。

SO网友:Ryan S

如果使用,请确保对关系做了足够的处理,并且确保记录中存在这些值,请尝试使用或。