对于每个会员页面,您都可以选择组件(例如个人资料、设置、活动...)
我想要做的是向每个页面添加一个名为作业的新组件。我了解如何将链接添加到导航栏。它只是创建让我感到困惑的页面。
我是否添加一个新目录,如果是,我如何让 buddypress 知道。
具有如下 url 结构:
example.com/member/username/jobs
很重要。
谢谢!
对于每个会员页面,您都可以选择组件(例如个人资料、设置、活动...)
我想要做的是向每个页面添加一个名为作业的新组件。我了解如何将链接添加到导航栏。它只是创建让我感到困惑的页面。
我是否添加一个新目录,如果是,我如何让 buddypress 知道。
具有如下 url 结构:
example.com/member/username/jobs
很重要。
谢谢!
全局变量 $bp 是您要插入新 Jobs 组件的位置。通过转储全局变量 $bp,您可以看到其中包含的所有元素,包括所有组件。要轻松转储 $bp,请将以下内容添加到 member-header.php 的顶部:
global $bp;
foreach ( (array)$bp as $key => $value ) {
echo '<pre>';
echo '<strong>' . $key . ': </strong><br />';
print_r( $value );
echo '</pre>';
}
$bp 中要添加组件“Jobs”的数组是 bp_nav。
在functions.php中添加以下内容:
add_action( 'bp_setup_nav', 'add_subnav_items', 100 ); //Priority must be higher than 10
function add_subnav_items() {
global $bp;
//Jobs tab
$tab_array['name'] = 'Jobs';
$tab_array['link'] = $bp->displayed_user->domain.'jobs';
$tab_array['slug'] = 'jobs';
$tab_array['parent_url'] = $bp->displayed_user->domain;
$tab_array['parent_slug'] = bp_core_get_userlink(bp_loggedin_user_id());
$tab_array['css_id'] = 'jobs';
$tab_array['position'] = 100;
$tab_array['user_has_access'] = '1';
$tab_array['screen_function'] = 'bp_jobs_screen_general';
$bp->bp_nav['jobs'] = $tab_array; //Add new array element to the 'bp_nav' array
}
'screen_function' 是一个处理选择 'Jobs' 选项卡时要显示的屏幕的函数,因此您必须在 functions.php 中添加函数 'bp_jobs_screen_general':
function bp_jobs_screen_general() {
bp_core_load_template( apply_filters( 'bp_jobs_screen_general','members/single/jobs' ) );
}
此函数在 members/single/ 中查找名为 jobs.php 的模板文件,因此您必须创建它。有关 screen_function 如何工作的示例,请参阅 wp-content/plugins/buddypress/bp-groups/bp-groups-screens.php 中用于显示组屏幕的函数。