我有一个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
有没有人知道如何在没有插件的情况下做到这一点?
答案 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.php
或bp-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' );