为什么GET_USERS()不在管理后端工作?

时间:2019-09-13 作者:Caio Mars

我不明白为什么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:已添加详细信息

1 个回复
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。

相关推荐