如何正确使用wp_signon?

时间:2018-02-07 17:37:14

标签: wordpress

我制作了一种自定义授权形式。 var_dump显示$ _POST中的数据已正确传递,但为什么不重定向到指定的页面呢?帮助我理解

my_authentification.php:

<?php   $my_user = new WP_User(get_current_user_id());  ?>
<form name="loginform" id="loginform" action="http://myreg_test_wordpress.loc/wp-content/themes/twentysixteen/my_auth.php" method="post">
<div class="form-title "><h2>Authorization Form:</h2></div>
<label>Email: <br />
    <input type="text" name="log" id="user_login" /></label>
<label>Password :<br />
    <input type="password" name="pwd" id="user_pass" /></label>
<label><input name="rememberme" type="checkbox" id="rememberme" value="forever" /> remember</label>
<input type="submit" name="wp-submit" id="wp-submit" value="Войти" />

<input type="hidden" name="redirect_to" value="<?php bloginfo('url') ?>/my-temp-page-edit/" />
<input type="hidden" name="testcookie" value="1" />
<a href="<?php echo bloginfo('url').'/my-temp-page/' ?>"><div class="my_btn">link to registration page</div></a>
</form>

my_auth.php:

$_SERVER['HTTP_REFERER'];
require_once( dirname(__FILE__) . '/../../../wp-load.php' );

if( is_user_logged_in() ) exit;


$my_user = new WP_User(get_current_user_id());

$user = wp_signon();
if ( is_wp_error($user) ) {
echo $user->get_error_message();
//wp_redirect('http://myreg_test_wordpress.loc/wp-content/themes/twentysixteen/my_authorization.php');
var_dump('my_authorization');

} else {

//wp_redirect('http://myreg_test_wordpress.loc/wp-content/themes/twentysixteen/my_temp_page_edit.php');
var_dump('temp_page_edit');
}

2 个答案:

答案 0 :(得分:2)

亚历山大。我可以假设你说俄语。可能会阅读俄文文档将更容易。 Check this link这对官方文档很好。

同样在之前的问答中,我给出了如何做到这一点的答案。

  

创建表单,发送admin-post.php并创建钩子   登录用户并重定向您需要的地方。或者使用默认的WordPress   登录页面。没有自定义表单。

admin-post.php参考和用法示例。并且不错guide如何在wordpress中使用admin-post.php

答案 1 :(得分:-1)

my_auth.php不要使用!我有问题因为我在wp_redirect之前是var_dumping $ user。并且wp_redirect没有用!

my_authentification.php:

    <?php
        if(isset($_POST['log'])) {

        $user = wp_signon();

        if (is_wp_error($user)) {
        $auth_error = 'Wrong auth data';
        } else {
            // DON'T war_dumping !!!!!!!!
        wp_redirect('/my-temp-page-edit');
        exit;
        }

        };
        get_header();
        ?>
        <?php   $my_user = new WP_User(get_current_user_id());  ?>
        <?php if (!$my_user->ID)  { ?>
            <form name="loginform" id="loginform"  method="post">
                <div class="form-title "><h2>Authorization Form: <span><?php echo $auth_error ?></span></h2></div>
                <label>Email: <br />
                    <input type="text" name="log" id="user_login" /></label>
                <label>Password :<br />
                    <input type="password" name="pwd" id="user_pass" /></label>
                <label><input name="rememberme" type="checkbox" id="rememberme" value="forever" /> Remember me</label>
                <input type="submit" name="wp-submit" id="wp-submit" value="Enter" />

                <input type="hidden" name="redirect_to" value="<?php bloginfo('url') ?>/my-temp-page-edit/" />
                <input type="hidden" name="testcookie" value="1" />
            </form>
        <?php  } ?>