前端用户创建表单!在出错的情况下,如何让用户保持在同一页面上?

时间:2011-02-04 作者:user2923

我最近尝试在我的网站前端添加一个用户注册表单,并使用了以下表单代码(基于this 我在回答中发现maugly 有疑问Front-end Register Form) 在模板文件中:

    <div id="tab2_login" class="tab_content_login" >
        <h3>Add a child</h3>
        <form method="post" action="<?php echo site_url(\'wp-login.php?action=register\', \'login_post\') ?>" class="wp-user-form">
            <div class="username">
                <label for="user_login"><?php _e(\'Child Name\'); ?>: </label>
                <input type="text" name="user_login" value="<?php echo esc_attr(stripslashes($user_login)); ?>" size="20" id="user_login" />
            </div>
            <div class="email">
                <input type="text" name="user_email" value="<?php echo esc_attr(stripslashes($user_email)); ?>" size="25" id="user_email" />
            </div>
            <div class="login_fields">
                <?php do_action(\'register_form\'); ?>
                <input type="submit" name="user-submit" value="add child" class="user-submit" />
                <?php 

                $register = $_GET[\'register\']; 


                if($register == true) { 

                    //now add it to the link database

                    echo \'<p>User Added!</p>\'; 

                } ?>

                <input type="hidden" name="redirect_to" value="<?php echo $_SERVER[\'REQUEST_URI\']; ?>?register=true" />  

                <input type="hidden" name="user-cookie" value="1" />
            </div>
        </form>
    </div>
Theredirect_to 属性在这里被设置为请求页面,当它通过触发if块来显示额外的成功消息来工作时,这一切都很好。

我的问题是何时在中检测到错误wp-login.php (例如用户名已在使用)如何使重定向返回到此页面,而不是wp login生成的登录框/错误显示?我看不到任何明显的钩子可以抓住(虽然我还没有使用过动作,所以可能会遗漏一些东西!)

非常感谢您的帮助和指导!

瑞安

3 个回复
SO网友:aendra

钩住registration\\u错误(WP Codex在这方面非常不完整,但请参见下面的链接)。

抱歉,这没有多大帮助--问题比一开始看起来要复杂一些。我以后会进一步调查的。

链接:

SO网友:jaredwilli

如果我理解正确,您需要检查用户名是否已注册,如果已注册,请重定向回注册表?或者别的什么。

我想您需要在WP中使用auth\\u redirect()函数。这对你没什么帮助,但我想出了一个办法,可以在用户登录后将其重定向回上一页,而不是像WP登录时那样转到仪表板。

function you_must_login() {
    global $post;

    if ( !is_single() ) // if not currently on a single post (can use any other conditional here of your choice)
    return;

    $post_ids = array( 188, 185, 171 ); // array of post IDs that force users to login before reading

    if ( in_array( (int) $post->ID, $post_ids ) && !is_user_logged_in() ) {
        auth_redirect(); // redirect to previous page after logging in
    }
}
也许这对你有一些用处。我很确定您可能需要使用auth\\u重定向。

SO网友:Christine

这会将错误重定向到主页。输入函数。php

// block wordpress default login if error for extra security
function prevent_login_access() {
if (strpos(strtolower($_SERVER[\'REQUEST_URI\']), \'/wp-login\') !== false) {
wp_redirect( home_url() );
}
}

add_action(\'init\', \'prevent_login_access\', 0);
对于同一个页面,我不确定抱歉-但通过这个,您可以将其重定向到自定义错误页面或其他任何页面。

结束

相关推荐

Slug is redirecting to 404

我有一个页面叫做菜谱。我将其更改为Recipes\\u old并更改了slug,以便创建一个新的Recipes页面。当我创建新配方页面时,slug被正确定义为/Recipes/但我无法访问该页面,WordPress正在将所有请求重定向到/Recipes\\u old/如何删除重定向?我已经删除了Recipes\\u old和Recipes。不过,slug仍在重定向。