从特定页面重定向已注销的用户

时间:2016-02-18 03:25:33

标签: php wordpress

我有一个wordpress网站,它使用的是buddypress和bbpress。我需要隐藏/重定向所有未登​​录的人的所有buddypress和bbpress页面。因此,如果有人登陆成员页面,个人资料页面或任何论坛主题,则需要将其重定向到注册页面。

我尝试了5个插件,所有这些插件都会导致404错误,无法正常工作或只是白页等问题。

网址结构如下:

www.example.com/members
www.example.com/members/luke
www.example.com/forums
www.example.com/forums/forum/general-chat

有没有人知道如何在没有插件的情况下做到这一点?

2 个答案:

答案 0 :(得分:2)

你必须在子主题中修改profile-loop.php文件

your-child-theme/members/single/profile/profile-loop.php

在文件的第一行,添加

<?php if ( is_user_logged_in()  ) : ?>

在文件的末尾,插入最后一个endif和最后一个do_action:

<?php else : ?>
<?php echo “<div style=’width: 600px;height:25px; padding: 4px; border: 3px solid #ff0000; text-align: center; font-style:bold; font-size: 1.3em;’> You must be logged in to view a member profile</div>”; ?>
<?php endif; ?>

将div内联样式更改为与主题相关的任何内容。该示例符合bp-default。

如果你不能这样做,那就试试这个插件, plugin

尝试此操作,但请务必将网址更改为您想要的内容

add_action( 'admin_init', 'redirect_non_logged_users_to_specific_page' );

function redirect_non_logged_users_to_specific_page() {

if ( !is_user_logged_in() && is_page('add page slug or i.d here') && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) {

wp_redirect( 'http://www.example.dev/page/' ); 
    exit;
}

答案 1 :(得分:1)

theme/functions.phpbp-custom.php

中尝试此操作
function lukedi_private_check() {

    if ( ! is_admin() && ! is_user_logged_in() ) {

        if ( is_front_page() || is_home() || bp_is_register_page() || bp_is_activation_page() )
            return;

        $redirect_url = trailingslashit( site_url() );  // change this to whatever you need

        // member page
        if ( bp_is_user() )  
            bp_core_redirect( $redirect_url );

        // bbPress
        if( is_bbpress() ) 
            bp_core_redirect( $redirect_url );

        // members loop
        $bp_current_component = bp_current_component();

        if ( false != $bp_current_component ) {

            if ( 'members' == $bp_current_component )
                bp_core_redirect( $redirect_url );

        }

    }
}
add_action( 'bp_ready', 'lukedi_private_check' );