Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WordPress:将数据循环到数组中以进行WP_meta_查询_Php_Arrays_Wordpress - Fatal编程技术网

Php WordPress:将数据循环到数组中以进行WP_meta_查询

Php WordPress:将数据循环到数组中以进行WP_meta_查询,php,arrays,wordpress,Php,Arrays,Wordpress,我想做一个循环来创建一个请求WP_meta_查询(source:),但是我很难得到预期的结果 这里是上下文:人们可以在搜索表单中搜索帖子。我还通过magic-field-2插件在帖子上设置了自定义字段。当人们搜索时,他们可以写一些东西并选中一些复选框以获得更准确的结果 我发现最简单的管理方法是从搜索中提取数据,并执行WP_meta_查询以找到我需要的内容 此类搜索的实际语法如下所示: query_args = array( 'meta_query' => array( 'relat

我想做一个循环来创建一个请求WP_meta_查询(source:),但是我很难得到预期的结果

这里是上下文:人们可以在搜索表单中搜索帖子。我还通过magic-field-2插件在帖子上设置了自定义字段。当人们搜索时,他们可以写一些东西并选中一些复选框以获得更准确的结果

我发现最简单的管理方法是从搜索中提取数据,并执行WP_meta_查询以找到我需要的内容

此类搜索的实际语法如下所示:

query_args = array( 'meta_query' => array(
    'relation' => 'OR',
    array(
        'key' => 'foo_key',
        // 'value' => 'foo',
        // 'compare' => 'LIKE',
    ),
    array(
        'key' => 'bar_key',
    ),
) );
$meta_query = new WP_Meta_Query();
$meta_query->parse_query_vars( $query_args );
$mq_sql = $meta_query->get_sql(
    'post',
    $wpdb->posts,
    'ID',
    null
);
Array
(
    [0] => Array
        (
            [key] => enseignant
            [value] => John
            [compare] => IN
        )

    [1] => Array
        (
            [key] => travailleur
            [value] => John
            [compare] => IN
        )

)
Array
(
    [post_type] => post
    [meta_query] => Array
        (
            [relation] => OR
            [0] => Array
                (
                    [0] => Array
                        (
                            [key] => enseignant
                            [value] => John
                            [compare] => IN
                        )

                    [1] => Array
                        (
                            [key] => travailleur
                            [value] => John
                            [compare] => IN
                        )

                )

        )

)
正如我在我的主题中所说的,我正在尝试从搜索结果中循环并重新创建一个类似的数组

首先,我将数组一分为二

Array ( [s] => John ) 
Array ( [enseignant] => on [travailleur] => on )
其中一个是搜索词,另一个是我的复选框。如你所见,我在《恩塞格纳特》和《劳维尔》中寻找约翰

为了解决问题,我将所有内容都打包在这种查询中:

$requete = array();

$i = 0;

foreach($les_cases as $key => $value) {

    $requete[] = array('key'=>$key, 'value' => $le_terme_de_la_recherche['s'], 'compare'=>'IN');
    $i++;
}

$args = array(
    'post_type'        => 'post',
    'meta_query'        => array(
        'relation' => 'OR',
        $requete
    )
);
当我打印我的请求时,它会显示如下内容:

query_args = array( 'meta_query' => array(
    'relation' => 'OR',
    array(
        'key' => 'foo_key',
        // 'value' => 'foo',
        // 'compare' => 'LIKE',
    ),
    array(
        'key' => 'bar_key',
    ),
) );
$meta_query = new WP_Meta_Query();
$meta_query->parse_query_vars( $query_args );
$mq_sql = $meta_query->get_sql(
    'post',
    $wpdb->posts,
    'ID',
    null
);
Array
(
    [0] => Array
        (
            [key] => enseignant
            [value] => John
            [compare] => IN
        )

    [1] => Array
        (
            [key] => travailleur
            [value] => John
            [compare] => IN
        )

)
Array
(
    [post_type] => post
    [meta_query] => Array
        (
            [relation] => OR
            [0] => Array
                (
                    [0] => Array
                        (
                            [key] => enseignant
                            [value] => John
                            [compare] => IN
                        )

                    [1] => Array
                        (
                            [key] => travailleur
                            [value] => John
                            [compare] => IN
                        )

                )

        )

)
您可以看到我的数组中有很多[0],我怀疑这会在我的查询中产生一些错误

毕竟,如果我想能够选择数据的一部分,我应该像、中的或=那样进行比较。举个例子,如果我给约翰写信,它就能给我约翰·多伊


如果有人能帮我处理这个难题,我会很优雅。

您的元查询中有一个额外的数组

而不是做

$args = array(
    'post_type'        => 'post',
    'meta_query'        => array(
        'relation' => 'OR',
        $requete
    )
);
试一试

当然,还要确保您的元密钥是正确的。

(顺便说一句,[0]只是数组键,没有键的数组是不可能存在的)。

目前它实际上工作得很好。更新的Thx。