无需插件即可登录、注册和自定义详细信息

时间:2017-01-17 作者:Shon Levi

我正在wordpress中建立一个网站,我需要创建一个登录页&;使用ajax+帐户页面注册页面/弹出窗口,其中包含一些自定义字段,如地址、电话号码等。。。

我想在没有任何插件的情况下实现这一点——有人能给我一个教程或小说明如何实现它吗?如何开始?

PS-我对PHP SQL有很高的了解-如果没有wordpress,我会很容易构建,我只需要一点帮助,如何在wordpress系统中实现这一点

谢谢大家:)

2 个回复
SO网友:fatwombat

我现在也在做同样的事情,我只使用标准的WP登录/注册系统/页面。

您可以使用wp_signon() 进行登录。

然后,在标准页面上,您可以创建自定义模板并使用此模板检索其信息:wp_get_current_user()

您还需要使用以下方式获取存储的客户用户元信息:get_user_meta()

希望对您有所帮助:)

SO网友:hossein naghneh

用于查找和初始化操作

if (!is_user_logged_in()) {
    add_action(\'init\', \'ajax_login_init\');
} else {
    add_action(\'init\', \'ajax_logout_init\');
}
function ajax_login_init()
{
    add_action(\'wp_ajax_nopriv_ajax_login\', \'ajax_login\');
    add_action(\'wp_ajax_nopriv_ajax_register\', \'ajax_register\');
}
function ajax_logout_init()
{
    add_action(\'wp_ajax_ajax_logout\', \'ajax_logout\');
}
登录功能

function ajax_login()
{
    check_ajax_referer(\'ajax-login-nonce\', \'security\');
    $info = array();
    $info[\'user_login\'] = $_POST[\'login_username\'];
    $info[\'user_password\'] = $_POST[\'login_password\'];
    $info[\'remember\'] = $_POST[\'remember\'];

    $user_signon = wp_signon($info, false);
    if (is_wp_error($user_signon)) {
        wp_send_json(array(\'status\' => 0, \'message\' => $user_signon->get_error_message()));
    } else {
        wp_send_json(array(\'status\' => 1, \'message\' => __(\'you currectly logined\')));;
    }
}
寄存器功能

function ajax_register()
{
    check_ajax_referer(\'ajax-register-nonce\', \'security\');
    // Post values
    $username = sanitize_text_field($_POST[\'register_username\']);
    $password = sanitize_text_field($_POST[\'register_password\']);
    $email = sanitize_text_field($_POST[\'register_email\']);
    $name = sanitize_text_field($_POST[\'register_name\']);
    $nick = sanitize_text_field($_POST[\'register_name\']);

    $userdata = array(
        \'user_login\' => $username,
        \'user_pass\' => $password,
        \'user_password\' => $password,
        \'user_email\' => $email,
        \'first_name\' => $name,
        \'nickname\' => $nick,
    );

    $user_id = wp_insert_user($userdata);

    // add user meta
    $custom_user_meta_value = \'custom_user_meta_value\';
    add_user_meta( $user_id, \'custom_user_meta\', $custom_user_meta_value);

    // Return
    if (!is_wp_error($user_id)) {
        $user_signon = wp_signon($userdata, false);
        if (!is_wp_error($user_signon)) {
            wp_send_json(array(\'status\' => 2, \'message\' => __(\'your registration is successfuled and logined.\')));
        } else {
            wp_send_json(array(\'status\' => 1, \'message\' => __(\'your registration is successfuled and logined\')));
        }
    } else {
        wp_send_json(array(\'status\' => 0, \'message\' => __($user_id->get_error_message())));
    }
}
注销功能

function ajax_logout()
{
    check_ajax_referer(\'ajax-logout-nonce\', \'ajaxsecurity\');

    wp_logout();
    ob_clean(); // probably overkill for this, but good habit
    echo \'adios!!\';
    wp_die();
}

add_action(\'wp_logout\', \'auto_redirect_after_logout\');
function auto_redirect_after_logout()
{
    wp_redirect(home_url());
    exit();
}

相关推荐

如何筛选/钩入检索密码()以筛选$_POST[‘USER_LOGIN’]?

我正在开发一个网站,其中用户名是一个文件编号,称为CPF(将其视为国家ID),该网站具有以下掩码:000.000.000-00 我将用户名存储为普通数字,但我们所有的表单都必须有上面的掩码,这反过来使其_POST[\'user_login\'] 总是带着破折号和圆点。这是用户登录/用户名的示例:$_POST[\'user_login\'] = \'123.456.789-00\' $actual_username_ondb = \'12345678900\' 这对于登录来说不