0

对于每个会员页面,您都可以选择组件(例如个人资料、设置、活动...)

我想要做的是向每个页面添加一个名为作业的新组件。我了解如何将链接添加到导航栏。它只是创建让我感到困惑的页面。

我是否添加一个新目录,如果是,我如何让 buddypress 知道。

具有如下 url 结构:

example.com/member/username/jobs 

很重要。

谢谢!

4

1 回答 1

3

全局变量 $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 中用于显示组屏幕的函数。

于 2013-03-02T03:54:04.770 回答