你这里有一些错误,但你的总体方向是正确的。
您的线路
apply_filters(\'my_get_users\', $users, $group);
表示将2个参数传递给函数
my_get_users
. 您将$users作为空数组传递,这是不必要的,但这里的主要问题是另一个问题。
你可以通过
add_filter(\'my_get_users\',\'define_users\',10,1);
这一行告诉WordPress您的函数
define_users
接受1个参数(此行中第4个参数的值)。
因此WordPress尝试传递2个参数:
由于您的函数设置为仅接受一个参数,因此它只获取空的$users
大堆
在您的功能中define_users($group)
$组获取以前$用户的值,因此在使用$group
在那里。
解决方案是(两种可能性):
只向过滤器传递一个参数
function define_users($group) {
//Query database for users belonging to a group
global $wpdb;
$users= $wpdb->get_results("SELECT user_id from $wpdb->usermeta WHERE meta_key=\'groupname\' AND meta_value=$group",ARRAY_N);
return $users;
}
add_filter(\'my_get_users\',\'define_users\',10,1);
function my_get_users($group) {
$users = apply_filters(\'my_get_users\', $group);
return $users;
}
为2个参数定义函数(本例中不使用)
function define_users($users, $group) {
//Query database for users belonging to a group
global $wpdb;
$users= $wpdb->get_results("SELECT user_id from $wpdb->usermeta WHERE meta_key=\'groupname\' AND meta_value=$group",ARRAY_N);
return $users;
}
add_filter(\'my_get_users\',\'define_users\',10,2);
function my_get_users($group) {
//Define users as array
$users=array();
$users = apply_filters(\'my_get_users\', $users, $group);
return $users;
}
还有什么要说的请检查以下事项:您真的需要手动查询还是可以通过
get_users
?在这种情况下,实际上不需要过滤器,除非您有其他带有钩子的函数来更改您的用户列表