6

カスタム wordpress ajax ログイン フォームを作成しようとしていますが、並べ替えることができません。私が使用するコードは次のとおりです。

HTML:

            <form class="well form-inline" id="login">
                <div class="rowmargin">
                    <h4>Login</h4>
                </div>
                <div class="rowmargin">
                    <input type="text" name="username" id="loginUsername" class="input-medium" placeholder="Username">
                    <input type="password" name="password" id="loginPassword" class="input-medium" placeholder="Password">
                </div>
                <a class="btn btn-primary" id="loginButton"><i class="icon-check icon-white"></i> Login</a>
            </form>

JS:

    <script type="text/javascript">

        $(document).ready(function() {

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

                var username = $('#loginUsername').val();
                var password = $('#loginPassword').val();
                var rememberme = "forever";
                var redirect = '<?php bloginfo('url'); ?>';

                var data = {
                    user_login:     username,
                    user_password:  password,
                    remember:       rememberme,
                    redirect_to:    redirect
                }

                $.ajax({
                    url: '<?php bloginfo('url'); ?>/wp-login.php',
                    data: data,
                    type: 'GET',
                    dataType: 'jsonp',
                    success: function( result ) {
                        if (result.success==1) {
                            alert("Ok!");
                        } else {
                            alert("Not Ok!");
                        }
                    }
                }); 

            });

        });

        </script> <!-- Login Script --->

誰かが私がここで間違っていることを教えてもらえますか?

4

4 に答える 4

5

ログインにはwp関数を使用する必要があります。

http://codex.wordpress.org/Function_Reference/wp_signon

次に、ajaxを使用してこの関数にアクセスし、ログインします。functions.phpにログイン関数を記述できます。

WordPressでajaxを使用する方法については、以下をクリックしてください。

http://wpmu.org/how-to-use-ajax-with-php-on-your-wp-site-without-a-plugin/

于 2012-08-01T03:04:36.977 に答える
1

WordPress のすべての AJAX リクエストは通過する必要がありますwp-admin/admin-ajax.phpwp-login.php応答しません。 http://codex.wordpress.org/Class_Reference/WP_Ajax_Response

利用可能な一連のアクションがありますが、ログイン方法に近いものはありません。ただし、自分が何をしているのかわかっている場合は、独自のアクションを登録して、ログイン プロセスを自分で処理することができます。 http://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(アクション)

于 2012-07-31T17:22:06.183 に答える
0
<form class="well form-inline" id="login">
    <div id="message"></div>
    <div id="loading" style="display:none;"></div>
    <div class="rowmargin">
        <h4>Login</h4>
    </div>
    <div class="rowmargin">
        <input type="text" name="username" id="loginUsername" class="input-medium" placeholder="Username">
        <input type="password" name="password" id="loginPassword" class="input-medium" placeholder="Password">
    </div>
    <a class="btn btn-primary" id="loginButton"><i class="icon-check icon-white"></i> Login</a>
</form>


jQuery(document).ready(function(){      
    jQuery('#loading').hide();
    jQuery("#loginButton").click(function() {   
        jQuery('#message').hide().html('');
        jQuery('#loading').hide();
        var input_data = jQuery('#login').serialize();
        var logUser = jQuery('#loginUsername').val();
        var logPass = jQuery('#loginPassword').val();

        if(logUser == '' && logPass != ''){ jQuery('#message').show().html('Your Username is empty!'); return false; }
        if(logPass == '' && logUser != ''){ jQuery('#message').show().html('Your Password is empty!'); return false; }
        if(logUser == '' && logPass == ''){ jQuery('#message').show().html('Your Username and Password is empty!'); return false; } 

        jQuery('#loading').show();
        jQuery.ajax({
            type: "POST",
            url: "<?php echo site_url('wp-login.php','login_post'); ?>",
            data: input_data,
            success: function(msg) {                                    
                // login success. redirect users to some page.
                jQuery(location).attr('href', '<?php echo home_url( '/thank-you/' ); ?>');

            },
            error: function(msg) {  
                // login error.                 
                jQuery('#message').show();
                jQuery('#message').html("<?php _e('Your login  is not correct. Please try again.'); ?>");
                jQuery('#loading').hide();
            }

        }); 
        return false;
    });
});
于 2015-02-03T14:41:44.120 に答える