2024年10月17日 建站教程
第一步,在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' );
最后在页面中做一个登录弹窗页面~
本文链接:http://so.lmcjl.com/news/15576/