注册失败时重定向至自定义URL?

时间:2011-07-02 作者:jilseego

当我想在成功注册后重定向用户时,我只使用“registration\\u redirect”过滤器挂钩。如果注册失败,我应该使用哪个过滤器挂钩呢?我查看了wp登录。php,但我没有看到任何可以使用的过滤器/操作挂钩。我该怎么办?

2 个回复
最合适的回答,由SO网友:Innate 整理而成

您可以添加htaccess重定向或尝试主题“我的登录”插件:http://wordpress.org/extend/plugins/theme-my-login/. 它有自定义重定向选项。

SO网友:david.binda

有一个更复杂的解决方案代替htaccess或插件。对于那些对这个主题感兴趣的人,我的代码可以在尝试辞职失败后(恰好在之前)重定向。

为什么之前?在尝试注册之前,WordPress会检查用户名和电子邮件地址,它们是否为空,是否已经在DB中,以及电子邮件和用户名是否正确。如果是这样,它会报告错误,您可以在检查之后立即挂接到函数。

do_action( \'register_post\', $sanitized_user_login, $user_email, $errors );
下一步-不可查找-是尝试创建新用户。如果失败,则会出现另一条错误消息,您将被重定向到标准wp\\U登录。php屏幕。

但是,有一个但是。下一步,此过程只调用wp\\u insert\\u user(),此函数仅在空的\\u user\\u登录、现有的\\u user\\u登录和现有的\\u user\\u电子邮件上失败,否则将成功结束。如果您仔细阅读了,则在调用此函数之前会检查所有这些变量(这种双重检查是合乎逻辑的,因为您可以直接从插件调用wp\\u insert\\u user)。

所以,如果在上述挂钩之后注册进程失败,它就会失败,因为WordPress安装有问题,所以,这并不是挂接到注册进程的重定向功能失败。

最后是一些代码,ho只想复制并粘贴一个代码,以便在登录失败后重定向到自定义页面:

add_action(\'register_post\', \'binda_register_fail_redirect\', 99, 3);

function binda_register_fail_redirect( $sanitized_user_login, $user_email, $errors ){
    //this line is copied from register_new_user function of wp-login.php
    $errors = apply_filters( \'registration_errors\', $errors, $sanitized_user_login, $user_email );
    //this if check is copied from register_new_user function of wp-login.php
    if ( $errors->get_error_code() ){
        //setup your custom URL for redirection
        $redirect_url = get_bloginfo(\'url\') . \'/registrace\';
        //add error codes to custom redirection URL one by one
        foreach ( $errors->errors as $e => $m ){
            $redirect_url = add_query_arg( $e, \'1\', $redirect_url );    
        }
        //add finally, redirect to your custom page with all errors in attributes
        wp_redirect( $redirect_url );
        exit;   
    }
}

结束

相关推荐

Add new post redirection

我不知道我的网站出了什么问题,这是第二个重定向问题,每当我添加一篇新文章,在添加标题后,当我尝试添加内容时,我自己的网站主页会出现在内容框旁边的一个红色边框框中,一个页面试图加载,这个页面一直在加载,没有任何内容,加载页面的url是“http://mywebsite.com/wp-admin/post-new.php“”