我不明白为什么get_users()
可在前端工作,但不能在管理后端工作。我相信这在某种程度上是可行的。
我的代码:
function add_new_user_menu_item() {
remove_submenu_page(\'users.php\', \'user-new.php\');
$submenu_title = __( \'Add new\', \'myplugin\' );
add_submenu_page(
\'users.php\',
__( \'Add user\', \'myplugin\' ),
$submenu_title,
\'create_users\',
\'new-user\',
\'manage_new_user_submit\'
);
} add_action( \'admin_menu\', \'add_new_user_menu_item\' );
function manage_new_user_submit() {
if ( isset( $_POST ) && isset( $_POST[\'action\'] ) ) {
if ( $_POST[\'action\'] == \'newuser\' && wp_verify_nonce( $_POST[\'_wpnonce_add-user\'], \'add-user\' ) ) {
session_start();
$errors = array();
$is_registered = get_users( array(
\'meta_key\' => \'my_meta_key\',
\'meta_value\' => sanitize_text_field($_POST[\'my_meta_value\']),
\'fields\' => array( \'id\', \'user_email\' ),
\'role\' => \'customer\',
));
// $is_registered returns an array()
error_log("Register: " . json_encode($is_registered));
}
....
}
}
它返回一个空数组。如果我运行函数
get_users()
在前端打开
template_redirect
动作挂钩我正确地获得了用户。
这可能是权限问题吗?不,对吧?它在前端运行。我说得太早了吗?别这么想。
Edit:已添加详细信息
SO网友:Mike Baxter
可能是用户。php尚未加载。get\\u users()是WP\\u User\\u查询的包装器,在WP includes/User中定义。php。挂钩表明template\\u redirect在wp之后,在用户注册之后。
也许您可以尝试在前端有条件地挂接“template\\u redirect”,并\'user_admin_menu\' 在后端。
if (is_admin()){
add_action(\'user_admin_menu\',\'manage_new_user_submit\');
} else {
add_action(\'template_redirect\',\'manage_new_user_submit\');
}
此外,还可以删除get\\u users()命令中的尾部逗号。这有时会导致null。