根据用户类型以不同方式更改默认的 Buddypress 用户登录页面
Change the default Buddypress user landing page differently depending on the type of user
我使用 plugins.php 文件为用户制作了一个自定义导航页面。
但我希望这个 page/option 只适用于某些类型的用户;并将其设为他们的默认着陆页。
我不知道该怎么做。
我试图将其设为默认登录页面,并在插件模板文件中添加了一个条件,根据用户的类型重定向用户...但重定向似乎在那里不起作用。
有什么线索吗,请问?
我使用的是 Wordpress 5.8.2 和 Buddypress 9.1.1。
谢谢
我找到了解决办法。
首先,这是我创建新导航项的方法;我将此代码放入我的 bp-custom.php
文件中:
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 );
在我的主题目录中 community/members/single 创建一个新目录后,我将在这个目录中放置我的 newnavitem 循环并编辑模板文件。
然后我将 newnavitem 及其模板与此函数链接起来
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' ) );
}
下面是我如何为某些用户类型禁用当前导航项,并将其设置为其他特定用户类型的默认登录页面。
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' );
我使用 plugins.php 文件为用户制作了一个自定义导航页面。 但我希望这个 page/option 只适用于某些类型的用户;并将其设为他们的默认着陆页。
我不知道该怎么做。
我试图将其设为默认登录页面,并在插件模板文件中添加了一个条件,根据用户的类型重定向用户...但重定向似乎在那里不起作用。
有什么线索吗,请问?
我使用的是 Wordpress 5.8.2 和 Buddypress 9.1.1。 谢谢
我找到了解决办法。
首先,这是我创建新导航项的方法;我将此代码放入我的 bp-custom.php
文件中:
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 );
在我的主题目录中 community/members/single 创建一个新目录后,我将在这个目录中放置我的 newnavitem 循环并编辑模板文件。
然后我将 newnavitem 及其模板与此函数链接起来
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' ) );
}
下面是我如何为某些用户类型禁用当前导航项,并将其设置为其他特定用户类型的默认登录页面。
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' );