首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据用户类型不同,更改默认Buddypress用户登陆页

问根据用户类型不同,更改默认Buddypress用户登陆页
EN

Stack Overflow用户
提问于 2021-11-20 19:07:40
回答 1查看 151关注 0票数 0

我使用plugins.php文件为用户定制了一个导航页面。但我希望这个页面/选项只适用于某些类型的用户,并使其成为他们的默认登陆页面。

我不知道该怎么做。

我试图使它成为默认的登陆页面,并在插件模板文件中添加一个条件,根据用户的类型重定向用户.但重定向似乎不起作用。

有线索吗,拜托?

我使用Wordpress 5.8.2和Buddypress 9.1.1。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-13 15:05:09

我找到了解决办法。

首先,下面是我如何创建一个新的导航项;我将这段代码放在我的bp-custom.php文件中:

代码语言:javascript
复制
function bp_custom_user_nav_item() {
    global $bp;

    $args = array(
            'name' => __('newnavitem', 'buddypress'),
            'slug' => 'newnavitem',
            'default_subnav_slug' => 'newnavitem',
            'position' => 0,
            'show_for_displayed_user' => true,
            'screen_function' => 'bp_custom_user_nav_item_screen',
            'item_css_id' => 'newnavitem'
    );

    bp_core_new_nav_item( $args );
}
add_action( 'bp_setup_nav', 'bp_custom_user_nav_item', 99 );

在我的主题目录中创建了社区/members/single中的新目录之后,在这个目录中,我将放置我的newnavitem循环并编辑模板文件。

我将新导航项及其模板链接到这个函数。

代码语言:javascript
复制
function bp_custom_user_nav_item_screen() {
        add_action( 'bp_template_content', 'bp_custom_screen_content' );
        bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/newnavitem' ) );
    }

下面是我如何为某些用户类型禁用当前导航项,并将其设置为其他特定用户类型的默认登陆页面。

代码语言:javascript
复制
function conditionally_disable_newnavitem( $enabled, $component) {
    if (user_can(bp_displayed_user_id(),'firstusertype') && $component === 'newnavitem') {
        $enabled = false;
    }
    return $enabled;
}

add_filter( 'bp_is_active', 'conditionally_disable_new_navitem', 10, 2 );

function set_default_component () {
 
    if ( user_can(bp_displayed_user_id(),'secondusertype') || user_can(bp_displayed_user_id(),'thirdusertype')) {
        define ( 'BP_DEFAULT_COMPONENT', 'newnavitem' );
        add_filter( 'bp_is_active', function($retval, $component){
        if($component === 'newnavitem') return true;
        return $retval;
    }, 10, 2 );
    } else {
        define ( 'BP_DEFAULT_COMPONENT', 'activity' );
    } 
}
add_action( 'bp_core_setup_globals', 'set_default_component' );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70049044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档