【发布时间】:2017-03-16 01:11:54
【问题描述】:
在过去的两天里,我正在尝试为我的 Wordpress 网站制作自定义搜索表单,但我找不到处理 wp_user_query 函数的方法。我正在尝试使用一个数组来搜索另一个数组。
这是我将数据保存到数据库的表单
<input type="checkbox" name="check_list[]" value="121">
<input type="checkbox" name="check_list[]" value="122">
<input type="checkbox" name="check_list[]" value="123">
<input type="checkbox" name="check_list[]" value="124">
<input type="submit" name="submit" value="Submit">
值代表技能ID
提交后...
$skills = $_POST['check_list'];
add_user_meta( $userID, 'user_skills', $skills);
所以现在我们在 user_skills 元字段中有一个数组,看起来像这样
s:48:"a:3:{i:0;s:3:"121";i:1;s:3:"122";i:2;s:3:"123";}";
在另一种形式中,您可以从所有可用技能中进行选择
<input type="checkbox" name="search_list[]" value="121">
<input type="checkbox" name="search_list[]" value="122">
<input type="checkbox" name="search_list[]" value="123">
<input type="checkbox" name="search_list[]" value="124">
<input type="submit" name="submit" value="Submit">
提交此表单后会发生这种情况。
$skills =$_POST['search_list'];
$ids = filter_var_array($skills,FILTER_SANITIZE_STRING);
$args = array(
'meta_key' => 'user_skills',
'meta_value' => $ids,
'meta_compare' => 'IN'
);
$user_query = new WP_User_Query($args);
foreach ( $user_query->results as $user ) {
echo '<li>' . $user->display_name . '</li>';
}
这个方法我也试过了,还是不行
$args = array(
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'user_skills',
'value' => $ids,
'compare' => 'IN',
),
),
);
此时我知道有 3 个用户符合搜索条件,但函数没有返回任何内容。
通过使用print_r我可以看到该函数可以看到数组,但它不像我需要的那样工作
[meta_value] => Array
(
[0] => 121
[1] => 122
[2] => 123
)
谢谢
【问题讨论】:
标签: php arrays wordpress function parameter-passing