Php WordPress:将数据循环到数组中以进行WP_meta_查询
我想做一个循环来创建一个请求WP_meta_查询(source:),但是我很难得到预期的结果 这里是上下文:人们可以在搜索表单中搜索帖子。我还通过magic-field-2插件在帖子上设置了自定义字段。当人们搜索时,他们可以写一些东西并选中一些复选框以获得更准确的结果 我发现最简单的管理方法是从搜索中提取数据,并执行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
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。