web建站教程
  1. 首页
  2. vuejs
  3. js
  4. 好玩
  5. seo教程
  6. 前端知识
  7. 百度echarts
  8. 更多
    php入门
    nodejs
    mockjs
    reactjs
    mysql
    wordpress
    织梦cms
    帝国cms
    git教程
    IT知识
    模板大全
    休息站

wordpress如何在网站上新增ajax注册登录功能

384 ℃
     

第一步,在header.phpfooter.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建站如何利用mysql语法批量插入文章

wordpress搭建视频网,视频加载慢怎么解决

wordpress如何实现版本回退

wordpress如何在文章标题上显示置顶标签

wordpress如何在二级目录建站(小编亲测有效)

标签: ajax注册登录, wordpress建站, wordpress注册功能, wordpress登录功能

上面是“wordpress如何在网站上新增ajax注册登录功能”的全面内容,想了解更多关于 wordpress 内容,请继续关注web建站教程。

当前网址:https://ipkd.cn/webs_4390.html

声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!

当前位置: 网站首页 > wordpress
本文共计3420个字,预计阅读时长23分钟
生活小工具,收录了80多款小工具
上一篇: 推荐2款充满科技感的艺术字体——小新黑体、小新潮酷体
下一篇: 推荐一款浏览器数据库的开源工具库——Dexie.js(JavaScript调用)
x 打工人ai神器