通过多个选项进行自定义搜索发送到表单不起作用

时间:2013-06-07 作者:Enoque

我正在使用高级自定义字段插件为用户配置文件添加自定义字段,并使用简单的用户列表插件在站点前端显示用户列表。

我需要通过一些选项通过自定义搜索筛选用户列表:城市、社区和课程大学。

请参见此屏幕截图中如何使用它的示例:

See the screenshot of user profile displayed on the frontend

我创建了一个表单,它提供了下拉字段,允许选择城市、社区和课程,但过滤不起作用。

我需要根据搜索词显示多个用户,而不是像插件提供的那样搜索单个用户。

我的问题是:如何传递值数组​​要搜索用户并返回列表?

下面是我添加到城市、社区和球场搜索中的代码示例,但搜索不起作用。我对PHP知之甚少。

if ($_GET["FormOfSearch"]){ // if search form is submitted

if(isset($_GET["nome_of_city"]))
{
  $select_city = $_GET["name_of_city"];
}else{
  $select_city = "";
}

if(isset($_GET[\'name_of_neighborhood\']))
{
  $select_neighborhood = $_GET[\'name_of_neighborhood\'];
}else{
  $select_neighborhood = \'\';
}

if(isset($_GET[\'name_of_course\'])){
  $select_course = $_GET[\'name_of_course\'];
}else{
  $select_course = \'\';
}

$list_of_id  = "SELECT user_id FROM $wpdb->usermeta WHERE (meta_value = \'$select_city\') AND user_id IN (SELECT user_id FROM $wpdb->usermeta WHERE (meta_value= \'$select_neighborhood\')) AND user_id IN (SELECT user_id FROM $wpdb->usermeta WHERE (meta_value = \'$select_course\'))";

// Below, the array provided by plugin, I add the list of ID searched
// Generate the query based on search field
 $args2 = array(
        \'include\' => \'*\' . $list_of_id . \'*\',
        \'number\' => $number,
            \'orderby\' => $orderby,
        \'order\' => $order
           );

2 个回复
最合适的回答,由SO网友:Ravinder Kumar 整理而成

输入键的值并检查结果。(使用get_users 查询用户的功能)

$args=array(
    \'relation\'=>\'AND\'
);
if(isset($_GET["nome_of_city"])){
    $arg[]=array(
            \'key\' => \'your_key_name_1\',
            \'value\' => $_GET["nome_of_city"]
        );
}
if(isset($_GET[\'name_of_neighborhood\'])){
    $arg[]=array(
        \'key\' => \'your_key_name_2\',
        \'value\'=>$_GET[\'name_of_neighborhood\'],
        \'compare\'=>\'IN\'
        );
}
if(isset($_GET[\'name_of_course\'])){
    $arg[]=array(
        \'key\' => \'your_key_name_3\',
        \'value\'=> $_GET[\'name_of_course\'],
        \'compare\'=>\'IN\'
        );
}
$users=get_users($args);
 foreach ($users as $user) {
        echo \'<li>\' . $user->user_email . \'</li>\';
    }
Important Link:

get_users()

SO网友:Enoque

Ravs您好,感谢您的回复和帮助。很抱歉延迟响应。

好吧,我完全按照你们上面所说的做了,但我不能用我的数组来根据搜索来实现插件的功能。

请参阅:我创建了一个函数my\\u arrays,它返回三个数组,如果用户选择一个选项select,则将创建每个数组。

所以我将数组返回到plugin的函数:return array_merge( $args3, $args4, $args5 ), 使用筛选器:add_filter(\'sul_user_query_args\', \'my_arrays\', 10, 3);

“sul\\u user\\u query\\u args”是插件的过滤器,请参见插件中的定义:

$args = apply_filters( \'sul_user_query_args\', array_merge( $args1, $args2 ) );

分页、角色和每页的总用户数在$args1中定义,添加我的筛选器后,$args1的规则不起作用。

问题是:如何将我的数组应用于过滤器?

我感谢你的帮助。

结束

相关推荐

Search posts by Tag

我希望我的搜索表单只显示按标记组织的结果。我知道你可以添加&tag=TAGNAME 但如何将其集成到表单中,以便我的网站只搜索包含与搜索框中输入的内容相同的标记的帖子?我在页面上有两个搜索,因此理想情况下,我希望能够通过HTML将其添加到表单中,而不是其他任何地方,但任何答案都可以:)谢谢