BuddyPress自定义导航和页面模板

时间:2014-04-13 09:41:08

标签: wordpress buddypress

我正在使用一个社交媒体网站。

我创建了一个名为"关于"的xprofile字段,并使用以下代码在buddypress页面中添加了一个新标签。

function custom_setup_nav() {
  global $bp;

  bp_core_new_nav_item( array( 
        'name' => __( 'About', 'buddypress' ), 
        'slug' => 'about', 
        'position' => 30, 
        'screen_function' => 'about_page'
  ) );
}

add_action( 'bp_setup_nav', 'custom_setup_nav' );

现在我创建了一个about页面并将其命名为about.php并将其上传到/ plugins / buddypress / bp-themes / bp-default / members / single

然后添加以下屏幕功能

function about_page() {
bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/about' ) );
}

现在,当我转到页面时,我总是会在那里显示成员页面,显示成员列表的页面,而不是我上传的自定义about.php页面,尽管网址保持不变,成员/用户名/约/

我有什么遗漏的吗?

感谢。

1 个答案:

答案 0 :(得分:2)

我认为你可能需要一个 subnav 项。尝试将custom_setup_nav功能更改为:

global $bp;
bp_core_new_nav_item( 
  array( 'name' => __( 'About', 'buddypress' ), 
    'slug'  => 'about',  
    'position' => 30,
    'show_for_displayed_user' => true,
    'default_subnav_slug' => 'about',
    'item_css_id' => 'about'
  ) 
);

bp_core_new_subnav_item( 
  array( 'name' => __( 'About', 'buddypress' ), 
    'slug' => 'about', 
    'parent_url' => $bp->loggedin_user->domain . 'about', 
    'screen_function' => 'about_page',
    'parent_slug' => 'about', 
    'position' => 10, 
    'item_css_id' => 'about' 
  )
);

另外,尝试在主题目录中创建一个名为/buddypress/的文件夹,然后使用路径:

/buddypress/members/single/about

这将确保每次升级BP时您的自定义都不会丢失。有关模板层次结构的更多信息,请参见此处:http://codex.buddypress.org/themes/theme-compatibility-1-7/template-hierarchy/