2011-11-05 97 views
8

我有我的網站前端工作的WordPress登錄表單,允​​許我的用戶登錄而無需訪問wp-login.php或離開「主題」或網站。在jQuery Popup中登錄WordPress - 如何驗證jQuery Ajax登錄?

如果您轉到http://westendmediacentre.com/dev並單擊登錄,您可以看到我的表單出現在jQuery彈出窗口中。我給這家代碼如下:

表格代號:

<div class="login-form"> 
     <form action="<?php echo get_option('home'); ?>/wp-login.php" method="post"> 
     <input type="text" name="log" id="log" value="Username<?php echo wp_specialchars(stripslashes($user_login), 1) ?>" size="20" class="login-fields" onclick="this.value='';" onblur="this.value=!this.value?'Username':this.value;"/> 
     <input type="password" name="pwd" id="pwd" value="Password" size="20" class="login-fields" onclick="this.value='';" onblur="this.value=!this.value?'Password':this.value;"/> 
     <input type="submit" name="submit" value="Login" class="login-button" /> 
     <input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" /> 
     </form> 
</div> 

的jQuery:

$('.button-login').click(function() { 
    $('.login-box').fadeIn('slow', function() { 
    // Animation complete 
    }); 
    $(".login-box").css({'z-index' : '10000'}); 
    $("#the-lights").css({'display' : 'block'}); 
    $("#the-lights").css({'z-index' : '1'}); 
    $("#the-lights").fadeTo("slow",0.7); 
}); 
$('.login-box-close').click(function() { 
    $('.login-box').fadeOut('fast', function() { 
    // Animation complete 
    }); 
    $("#the-lights").fadeTo("slow",0); 
    $("#the-lights").css({'display' : 'none'}); 
}); 

這完美的作品,但是,如果你嘗試用一些不好的憑據登錄,你再 - 導向到一個WordPress頁面給你的錯誤。

我想要做的是,這些錯誤出現在我的jQuery彈出窗口中,以便當您嘗試使用錯誤憑據登錄時,它會在窗體上方或下方提供錯誤消息,而不是重新指向另一個窗體頁面顯示那裏的錯誤。

我嘗試下面這個教程,但它沒有正確使用我現有的代碼工作:http://www.tutorialstag.com/custom-wordpress-login-without-using-a-plugin.html

將不勝感激,如果有人可以張貼一個可行的解決方案

+0

您不通過Ajax發佈您的登錄信息。您只需發佈到login.php。引用的教程是使用ajax發佈登錄的正確方法。 –

+0

當我試圖在教程的空白頁面上使用本教程時,我可以正確使用它。但是當我嘗試將其與現有代碼集成時,我遇到了問題。登錄時,它會在「results」div中的jQuery彈出窗口中重新加載整個頁面,而不僅僅是結果。我需要的只是當出現錯誤時,它在結果div中表示,並且在其成功時將其重定向到頁面。我怎樣才能做到這一點? –

+0

這個問題應該去http://wordpress.stackexchange.com/ –

回答

1

這是所有關於wordperess'結構,首先所有你應該知道,即使你提供正確或錯誤的登錄憑據,你的結構將用戶重定向到wp-login.php(因爲)
< ?php echo get_option('home'); ?>/wp-login.php line(我的意思是你只是發佈你的用戶名和密碼到wp-login.php)
然後,如果提供的信息是正確的,那麼wordpress再次重定向使用r到主頁,否則顯示錯誤(帶有抖動效果),您可以在wp-login.php文件中找到所有這些操作。
您可以使用兩種不同的選項。

  • 你能砍像
    WP-login.php中的文件,如果用戶didnt供應正確的用戶名/密碼,然後讓他重定向到http://www.westendmediacentre.com/dev/
  • 你可以使用Ajax驗證(我的意思是,你準備從數據庫的數據庫連接的PHP文件和檢索的用戶名和密碼,併發送回結果你的登錄系統)

如果選擇第二種方式構建自己的登錄機制,可以控制this後。這非常有用。

0

如果可能,請勿編輯任何核心文件。 你會後悔的。

如果你寫一個插件和插件正在處理您的jQuery彈出 - 那麼你可以這樣做:

要登錄表單,你可以看看這個插件: http://wordpress.org/extend/plugins/sidebar-login/

然後您只需在AJAX腳本將發佈的PHP文件中包含大部分邏輯。如果登錄失敗,PHP文件返回的數據將發送到您的AJAX腳本,您會很好。

0

你缺少這部分的教程

$("#submitbtn").click(function() { 

    $('#result').html('<img src="<?php bloginfo(' 
    template_url '); ?>/images/loader.gif" class="loader" />').fadeIn(); 
    var input_data = $('#wp_login_form').serialize(); 
    $.ajax({ 
     type: "POST", 
     url: "<?php echo " 
     http: //" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>", 
     data: input_data, 
     success: function(msg) { 
      $('.loader').remove(); 
      $(' 
<div>').html(msg).appendTo('div#result').hide().fadeIn('slow'); 
     } 
    }); 
    return false; 

});