第一步,在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' );
最后在页面中做一个登录弹窗页面~
上面是“wordpress如何在网站上新增ajax注册登录功能”的全面内容,想了解更多关于 wordpress 内容,请继续关注web建站教程。
当前网址:https://ipkd.cn/webs_4390.html
workflows工作流
一个白色的咖啡杯,蒸汽从杯子里冒出来
在月球上穿着太空服的宇航员
在地铁站里一个迷茫的非主流姑娘
三阶放大comfyui工作流
一个穿着发光红色长袍的人
图生图生成动漫效果ComfyUI工作流
《翅膀之王:鸡的团契》海报ComfyUI工作流
一幅梦幻家园comfyui工作流
猜你喜欢
声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!

jquery鼠标滑过图片边框特效(jquery.focus-follow插件)
Bootstrap可视化拖放布局
css3搭积木叠加图形
纯css翻书效果
在线生成金属文字
canvas经线动画走到效果
jquery做一个漂亮挂墙动态时钟











