自定义Buddypress配置文件页面设置为登录页面(BP_DEFAULT_COMPONENT)

时间:2019-01-07 04:39:13

标签: php wordpress buddypress

我正在尝试制作一个自定义的Buddypress个人资料标签,并使其成为用户个人资料的登录页面。我已经在functions.php中定义了选项卡:

// Profile home tab

function profile_tab_overview() {
      global $bp;

      bp_core_new_nav_item( array( 
            'name' => 'Overview', 
            'slug' => 'overview', 
            'screen_function' => 'overview_screen', 
            'position' => 40,
            'parent_url'      => bp_loggedin_user_domain() . '/overview/',
            'parent_slug'     => $bp->profile->slug,
            'default_subnav_slug' => 'overview'
      ) );
}
add_action( 'bp_setup_nav', 'profile_tab_overview' );


function overview_screen() {

    // Add title and content here - last is to call the members plugin.php template.
    add_action( 'bp_template_title', 'overview_title' );
    add_action( 'bp_template_content', 'overview_content' );
    bp_core_load_template( 'buddypress/members/single/plugins' );
}
function overview_title() {
    echo 'Overview';
}

function overview_content() { 
    echo 'Content';
}

然后我将其设置为wp-config.php中的个人资料登录页面,

//Change BuddyPress default Members landing tab.

define('BP_DEFAULT_COMPONENT', 'overview' );

如果我将BP_DEFAULT_COMPONENT更改为标准的Buddypress个人资料页面(如“个人资料”),则可以使用,但不适用于我创建的自定义页面。有谁知道为什么,或者我能做什么?

3 个答案:

答案 0 :(得分:1)

这应该使用BuddyPress 4.0+解决此问题:)

//Set Default Tab to Overview
define('BP_DEFAULT_COMPONENT', 'overview' );
add_filter( 'bp_is_active', function($retval, $component){
    if($component === 'overview') return true;
    return $retval;
}, 10, 2 );

答案 1 :(得分:1)

@Russ Powers修复非常完美..除了您的账户之外,其他所有账户均如此。当我在buddypress dasboard中单击您的个人资料时,当地址为:domain / members / you时,我会收到404错误

如果我只使用:

//Set Default Tab to active
define('BP_DEFAULT_COMPONENT', 'active' );

工作正常。但是用我的自定义选项卡我得到404错误..不知道为什么。 / member / you /某事之后的所有内容都可以正常运行,但是对于每个输入其个人资料/ members / mynick的用户,都会出错。

我正在使用此操作,因此没有人直接去wp-admin

add_action( 'load-profile.php', function() {
    if( ! current_user_can( 'manage_options' ) && function_exists( 'bp_core_get_user_domain' ) )
        exit( wp_safe_redirect( bp_core_get_user_domain( get_current_user_id() ) ) );
} );

答案 2 :(得分:0)

您使用的是哪个版本的BuddyPress?可能需要升级到4.0+-请注意,这可能是预期的。来自https://buddydev.com/what-is-new-in-buddypress-4-0/

  

恢复BP_DEFAULT_COMPONENT的行为

     

BP_DEFAULT_COMPONENT常量用于指定默认着陆   用户个人资料上的页面   链接(http://example.com/members/username/)已打开。

     

在BuddyPress 3.0中,添加用户首页(主屏幕)后,   行为改变了。如果启用了首页,则此常量   不行。为了使其工作,您必须禁用用户首页。   BuddyPress 4.0再次恢复了BP_DEFAULT_COMPONENT的霸主地位。   现在,它将按预期工作。

或者,您使用的是4.0+,则可能需要降级:https://buddypress.org/support/topic/bp_default_component-no-longer-working/

  

我正在使用define('BP_DEFAULT_COMPONENT','dashboard');在我的functions.php中,但由于一些更新而不再起作用。 ....   刚刚回滚到3.2.0,现在已经修复了它。