如果用户已登录,则按短代码重定向

时间:2019-11-20 作者:michelle

我想把wordpress登录屏幕放在我的主页上。如果用户未登录,我希望他们必须在框中输入用户名和密码(或注册)。。如果他们已经登录,我希望他们被重定向到概览页面。

如果用户未登录,则一切正常,但如果用户登录,则重定向不起作用。。

有人能告诉我下面的php代码有什么问题吗。

/* add login shortcode */

add_action( \'init\', \'my_add_shortcodes\' );

function my_add_shortcodes() {

    add_shortcode( \'my-login-form\', \'my_login_form_shortcode\' );
}

function my_login_form_shortcode( $attr ) {

    if ( is_user_logged_in()) {
    wp_redirect(\'http://michellemarcus.co.za/thinkingmachines/overview/\') ;
}

    if ( ! is_user_logged_in() ) 

    /* Set up some defaults. */
    $defaults = array(
        \'label_username\' => \'Username\',
        \'label_password\' => \'Password\'
    );

    /* Merge the user input arguments with the defaults. */
    $attr = shortcode_atts( $defaults, $attr );

    /* Set \'echo\' to \'false\' because we want it to always return instead of print for shortcodes. */
    $attr[\'echo\'] = false;

    return wp_login_form( $attr );
}

1 个回复
SO网友:Eduardo Marcolino

我相信您可以使用template\\u redirect来处理重定向步骤:

function my_page_template_redirect() {
    if ( !is_page( \'overview\' ) && is_user_logged_in() ) {
        wp_redirect( home_url( \'/thinkingmachines/overview/\' ) );
        die;
    }
}
add_action( \'template_redirect\', \'my_page_template_redirect\' );

相关推荐

WordPress使用内部IP地址‘LIMIT_LOGIN_LOCKOUTS’

我在Wordpress页面上使用AWS-Elastik Beanstalk。我有一个问题,wordpress阻止了内部IP“172.31.47.52”。但这是本地网络中的专用IP,而不是转发的IP。现在有没有办法告诉Wordpress使用正确的IP?Couse Wordpress会在短时间内锁定登录页面,因为Couse机器人想要登录。