你可以试着自己做一个。要在 BuddyPress 成员配置文件中创建新菜单项,您需要将以下函数放入主题的 function.php 或位于插件主目录中的 BuddyPress 的 bp-custom.php。
function bp_content_setup_nav() {
global $bp;
bp_core_new_nav_item( array(
'name' => __('My Posts', 'buddypress'),
'slug' => 'my-posts',
'screen_function' => 'my_posts_screen_link',
'position' => 40,//weight on menu, change it to whatever you want
'default_subnav_slug' => 'my-posts-subnav'
) );
bp_core_new_subnav_item( array(
'name' => __( 'My Posts', 'buddypress' ),
'slug' => 'my-posts',
'parent_url' => trailingslashit( bp_loggedin_user_domain() . 'main-tab' ),
'parent_slug' => 'my-posts',
'screen_function' => 'my_posts_screen_link',
'position' => 10//again, weight but for submenu
) );
do_action( 'bp_content_setup_nav' );
}
add_action( 'bp_setup_nav', 'bp_content_setup_nav' );
这只是为了设置一个选项卡和一个子导航。您可以通过复制 bp_core_new_subnav_item 并更改必要的元素来创建其他 sub_navs。否则,如果您只有一项(没有其他子导航),则不需要子导航位。如果您有多个子导航,那么您应该为主 nav_item 包含多余的子导航,否则它不会显示在子导航菜单上。
希望您可以自己推断所有位。如果没有,我可以尝试在另一个回复中澄清。否则,请尝试尝试。有关该功能的其他选项,请参阅http://codex.buddypress.org/developer/core/bp_core_new_nav_item/。
无论如何,要渲染内容,您现在需要在上面的函数下使用另一个函数来显示“screen_function”。
function my_posts_screen_link() {
add_action( 'bp_template_title', 'my_posts_screen_title' );
add_action( 'bp_template_content', 'my_posts_screen_content' );
bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) );
}
function my_posts_screen_title() {
echo 'Whatever Title You Want';
}
function my_posts_screen_content() {
get_template_part( 'directory-to-content-file' );
//or you can put code here; only useful for short bits or echoing plain text
}
对于多个子导航项,您需要为每个项设置一个屏幕功能。屏幕标题是可选的,因此您可以根据需要去掉它。
这就是您添加菜单和内容的方式。为了让您显示成员帖子,只需让您通过 get_template_part 调用的 php 文件运行循环并放置您需要的任何标准。要获取 args 中的用户作者,请参阅http://codex.buddypress.org/developer/the-bp-global/。如果您在运行循环方面需要帮助,请参阅众多 WordPress 文档中的任何一个。
警告词:据我所知,分页不适用于默认子导航。我一直无法让它工作。但是,它确实适用于任何其他子导航。所以不幸的是,如果你想分页,你将不得不创建额外的子导航。如果有人知道这个问题的答案,那么我自己就会全神贯注。
希望这能回答您的问题,并且不会太复杂或令人困惑。