2013-02-28 103 views
0

对你有选择的部件,每个成员页面(如个人资料,设置,活动...)BuddyPress的:添加自定义组件成员部分

我所试图做的是增加一个新的组件调用作业每页。我知道如何将链接添加到导航栏。这只是创造令我困惑的页面。

我要添加一个新的目录,如果是的话我该如何让buddypress知道。

有一个URL结构,如:

example.com/member/username/jobs 

是很重要的。

谢谢!

回答

3

全局变量$ bp是要插入新作业组件的位置。通过转储全局变量$ bp,可以看到其中包含的所有元素,包括所有组件。为方便倾倒$基点,添加以下成员的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”是处理是当选择“乔布斯的标签,所以你必须添加功能“中显示的屏幕的功能bp_jobs_screen_general “中的functions.php:

function bp_jobs_screen_general() { 
    bp_core_load_template(apply_filters('bp_jobs_screen_general','members/single/jobs')); 
} 

该功能会在会员/单个命名jobs.php一个模板文件/所以你必须创建它。有关screen_function如何工作的示例,请参阅在wp-content/plugins/buddypress/bp-groups/bp-groups-screens.php中显示Groups屏幕的功能。

+0

不起作用...子菜单出现在成员页面菜单中,但是如果点击它,我会得到404错误。 – Alexey 2013-08-29 14:29:34