
第一步,在header.php或footer.php中引入如下代码:
<script type="text/javascript"> /* <![CDATA[ */ var ajax_sign_object = <?php echo ajax_sign_object(); ?>; /* ]]> */ </script>
第二步,找到functions.php文件新增以下代码:
/* 获取当前页面url
/* ---------------- */
function tin_get_current_page_url(){
$ssl = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? true:false;
$sp = strtolower($_SERVER['SERVER_PROTOCOL']);
$protocol = substr($sp, 0, strpos($sp, '/')) . (($ssl) ? 's' : '');
$port = $_SERVER['SERVER_PORT'];
$port = ((!$ssl && $port=='80') || ($ssl && $port=='443')) ? '' : ':'.$port;
$host = isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
return $protocol . '://' . $host . $port . $_SERVER['REQUEST_URI'];
}
/* AJAX登录变量
/* -------------- */
function ajax_sign_object(){
$object = array();
$object[redirecturl] = tin_get_current_page_url();
$object[ajaxurl] = admin_url( '/admin-ajax.php' );
$object[loadingmessage] = '正在请求中,请稍等...';
$object_json = json_encode($object);
return $object_json;
}
/* AJAX登录验证
/* ------------- */
function tin_ajax_login(){
$result = array();
if(isset($_POST['security']) && wp_verify_nonce( $_POST['security'], 'security_nonce' ) ){
$creds = array();
$creds['user_login'] = $_POST['username'];
$creds['user_password'] = $_POST['password'];
$creds['remember'] = ( isset( $_POST['remember'] ) ) ? $_POST['remember'] : false;
$login = wp_signon($creds, false);
if ( ! is_wp_error( $login ) ){
$result['loggedin'] = 1;
}else{
$result['message'] = ( $login->errors ) ? strip_tags( $login->get_error_message() ) : 'ERROR: ' . esc_HTML__( '请输入正确用户名和密码以登录', 'tinection' );
}
}else{
$result['message'] = __('安全认证失败,请重试!','tinection');
}
header( 'content-type: application/json; charset=utf-8' );
echo json_encode( $result );
exit;
}
add_action( 'wp_ajax_ajaxlogin', 'tin_ajax_login' );
add_action( 'wp_ajax_nopriv_ajaxlogin', 'tin_ajax_login' );
/* AJAX注册验证
/* ------------- */
function tin_ajax_register(){
$result = array();
if(isset($_POST['security']) && wp_verify_nonce( $_POST['security'], 'user_security_nonce' ) ){
$user_login = sanitize_user($_POST['username']);
$user_pass = $_POST['password'];
$user_email = apply_filters( 'user_registration_email', $_POST['email'] );
$errors = new WP_Error();
if( ! validate_username( $user_login ) ){
$errors->add( 'invalid_username', __( '请输入一个有效用户名','tinection' ) );
}elseif(username_exists( $user_login )){
$errors->add( 'username_exists', __( '此用户名已被注册','tinection' ) );
}elseif(email_exists( $user_email )){
$errors->add( 'email_exists', __( '此邮箱已被注册','tinection' ) );
}
do_action( 'register_post', $user_login, $user_email, $errors );
$errors = apply_filters( 'registration_errors', $errors, $user_login, $user_email );
if ( $errors->get_error_code() ){
$result['success'] = 0;
$result['message'] = $errors->get_error_message();
} else {
$user_id = wp_create_user( $user_login, $user_pass, $user_email );
if ( ! $user_id ) {
$errors->add( 'registerfail', sprintf( __( '无法注册,请联系管理员','tinection' ), get_option( 'admin_email' ) ) );
$result['success'] = 0;
$result['message'] = $errors->get_error_message();
} else{
update_user_option( $user_id, 'default_password_nag', true, true ); //Set up the Password change nag.
wp_new_user_notification( $user_id, $user_pass );
$result['success'] = 1;
$result['message'] = esc_html__( '注册成功','tinection' );
//自动登录
wp_set_current_user($user_id);
wp_set_auth_cookie($user_id);
$result['loggedin'] = 1;
}
}
}else{
$result['message'] = __('安全认证失败,请重试!','tinection');
}
header( 'content-type: application/json; charset=utf-8' );
echo json_encode( $result );
exit;
}
add_action( 'wp_ajax_ajaxregister', 'tin_ajax_register' );
add_action( 'wp_ajax_nopriv_ajaxregister', 'tin_ajax_register' );
最后在页面中做一个登录弹窗页面~
标签: ajax注册登录, wordpress建站, wordpress注册功能, wordpress登录功能
上面是“wordpress如何在网站上新增ajax注册登录功能”的全面内容,想了解更多关于 wordpress 内容,请继续关注web建站教程。
当前网址:https://m.ipkd.cn/webs_4390.html
声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!

wordpress建站前准备工作
AppScan扫描js报缺少Content-Security-Policy等安全漏洞问题解决方案