Вставить регистрацию WordPress на домашнюю страницу - PullRequest
0 голосов
/ 20 марта 2012

Я пытаюсь вставить регистрацию WordPress на домашнюю страницу. Я уже создал пользовательскую страницу регистрации, проблема в том, что она вызывает информацию заголовка, и я получаю эту ошибку, когда я включаю ее с помощью php include.

Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены

Есть ли способ, которым я могу использовать свой код, но каким-то образом изменить его / как-то с ним работать, чтобы форма регистрации полностью встраивалась / работала на странице, используя ajax, но чтобы она работала. Я не очень хорошо разбираюсь в Php, поэтому извините, если это глупый вопрос:

Текущий код регистрации (работает на собственной странице, но не включается в шаблон домашней страницы)

<?php
require_once(ABSPATH . WPINC . '/registration.php');
global $wpdb, $user_ID;
//Check whether the user is already logged in
if (!$user_ID) {

        if($_POST){
            //We shall SQL escape all inputs
            $username = $wpdb->escape($_POST['username']);
            if(empty($username)) { 
                echo "User name should not be empty.";
                exit();
            }
            $email = $wpdb->escape($_POST['email']);
            if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/", $email)) { 
                echo "Please enter a valid email.";
                exit();
            }       

                $random_password = wp_generate_password( 12, false );
                $status = wp_create_user( $username, $random_password, $email );
                if ( is_wp_error($status) ) 
                    echo "Username already exists. Please try another one.";
                else {
                    $from = get_option('admin_email');
                    $headers = 'From: '.$from . "\r\n";
                    $subject = "Registration successful";
                    $msg = "Registration successful.\nYour login details\nUsername: $username\nPassword: $random_password";
                    wp_mail( $email, $subject, $msg, $headers );

                    echo "Please check your email for login details.";
                }

            exit();

        } else { 
            echo "";        
            ?>

            <!-- <script src="http://code.jquery.com/jquery-1.4.4.js"></script> --> <!-- Remove the comments if you are not using jQuery already in your theme -->


            <?php                   
            if(get_option('users_can_register')) { //Check whether user registration is enabled by the administrator
            ?>

            <h1><?php the_title(); ?></h1>
            <br /><br />
            <div id="result"></div> <!-- To hold validation results -->
            <form id="wp_signup_form" action="" method="post">

            <label><p>Username:</p></label>
            <input type="text" name="username" class="text" value="" />
            <br /><br />
            <label><p>Email address:</p></label>
            <input type="text" name="email" class="text" value="" /> <br />
            <br />
            <input type="submit" id="submitbtn" class="Buttons" name="submit" value="Register" />
            <br />
            <br />
            </form>

            <script type="text/javascript">                         
            $("#submitbtn").click(function() {

            $('#result').html('<img src="<?php bloginfo('template_url'); ?>/images/loader.gif" class="loader" />').fadeIn();
            var input_data = $('#wp_signup_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;

            });
            </script>

            <?php 
                }

            else echo "Registration is currently disabled. Please try again later.";
            ?>

            </div>
            </div>
            <?php

            echo "";
        } //end of if($_post)

}
else {
    wp_redirect( home_url() ); exit;
}
?>

Ответы [ 2 ]

0 голосов
/ 21 марта 2012

Как рекомендует веб-фанат, не рекомендуется воспроизводить функции регистрации на домашней странице.Гораздо лучше было бы просто вырезать и вставить форму для входа со страницы регистрации и оставить форму action на странице регистрации:

<form method="post" action="<?php echo site_url('wp-login.php?action=register', 'login_post') ?>">
  <!-- registration form HTML goes here -->
</form>
0 голосов
/ 21 марта 2012

небезопасно использовать пользовательский метод для регистрации и рассылки.

, поэтому я предлагаю взглянуть на это http://digwp.com/2010/12/login-register-password-code/

Я надеюсь, что это то, что вы хотите.С наилучшими пожеланиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...