wordpress前端登录和wp-admin无法正常工作

时间:2017-08-22 06:27:15

标签: wordpress login wp-admin

我确实阻止所有用户都不是来自wp-admin的管理员使用此代码

add_action( 'init', 'blockusers_init' );
function blockusers_init() {
if ( is_admin() && ! current_user_can( 'administrator' ) &&
! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
wp_redirect( home_url() );
exit();
}
}

我用wp_signon();创建了前端登录表单问题是当我在管理员帐户中提交表单时它已成功登录但在尝试访问wp-admin时它总是返回主页url 那有什么不对,我该如何解决这个问题呢 我的表格

<?php 
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['logingo']) && $_POST['logingo']=='logingo'){
    global $user;
    $creds = array();
    $username = (isset($_POST['login_name'])) ? $_POST['login_name'] : '';
    $password = (isset($_POST['login_password'])) ? $_POST['login_password'] : '';
    $creds['user_login'] = $username;
    $creds['user_password'] =  $password;
    $creds['remember'] = true;
    $userid = wp_signon($creds,false);
    if(is_wp_error($user)){
        $proccess = '<div class="error_msg">'.$user->get_error_message().'</div>';
        $_SESSION['logged_errors'] = $proccess;
    }
    if(!is_wp_error($userid)){
        $_SESSION['logged_success'] = 'success message';
        wp_redirect(get_author_posts_url($userid->ID));
        exit();
    }
       }
        ?>
        <form action="" method="post">
            <label class="login_name">
                <input type="text" value="" name="login_name" required />
            </label>
            <label class="user_password">
                <input type="password" name="login_password" required />
            </label>
               <button type="submit" name="logingo" value="logingo">go</button>
        </form>

2 个答案:

答案 0 :(得分:0)

这可能是以下问题的结果:

  1. 在wp-login.php中重定向到主页的代码段:在问题中发布登录页面的代码。
  2. Cookie问题:清除浏览器Cookie和缓存,重新启动浏览器并尝试登录
  3. 插件:你有没有激活登录插件?或者它的另一个插件可能导致问题。停用所有插件,看看是否成功。
  4. 主题问题:您的主题可能有问题。更改为默认主题并重新安装所需的主题。将您的访问限制代码挂钩到functions.php
  5. 我建议您使用pre-built plugin限制非管理员用户访问WordPress信息中心,如果没有创建自己的插件。不建议更改functions.php中的代码,请参阅here

答案 1 :(得分:0)

当用户登录失败时,此快速代码段将强制WordPress重定向到您在wp_redirect()中指定的URL。我们还附加一个$ _GET变量,登录,并将其设置为失败,我们可以在主题中使用它来仅在用户登录失败时显示特殊内容。

 add_action( 'wp_login_failed', 'pippin_login_fail' );  // hook failed login
 function pippin_login_fail( $username ) {
    $referrer = $_SERVER['HTTP_REFERER'];  // where did the post submission come from?
    // if there's a valid referrer, and it's not the default log-in screen
    if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) {
      wp_redirect(home_url() . '/?login=failed' );  // let's append some information (login=failed) to the URL for the theme to use
      exit;
    }
}
相关问题