Buddypress:向成员部分添加自定义组件

时间:2013-02-28 20:51:48

标签: php wordpress buddypress

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

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

我是否添加了一个新目录,如果是这样,我如何知道这个目录。

有一个网址结构,如:

example.com/member/username/jobs 

很重要。

谢谢!

1 个答案:

答案 0 :(得分: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中要添加“作业”组件的数组是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中显示组屏幕的功能。