Buddypress如何在新的配置文件选项卡中显示成员帖子

时间:2013-10-02 00:50:09

标签: profile posts buddypress

我有一个具有Buddypress(1.8.1)社交网络功能的多用户Wordpress(3.6.1)博客站点。我正在尝试向Buddypress成员个人资料添加一个标签,其中包含个人资料成员以摘录格式提交的帖子。 以前在Profile中有一个名为BP Posts的插件不再有效。 Buddypress.org上有几个线程没有解决这个缺失的功能。 我正在寻找两部分的帮助: 1.如何向名为“我的帖子”的Buddypress成员个人资料添加新标签 2.如何获取要在此新标签页中显示的成员帖子列表

谢谢!

1 个答案:

答案 0 :(得分:7)

你可以尝试自己制作一个。要在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并更改必要的元素来创建其他子数据。否则,如果您只有一个项目(没有其他子项),则不需要subnav位。如果您有多个子视图,则应该为主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文档中的任何一个。

警告:据我所知,分页不适用于默认的subnav。我从来没有能够让它工作。但是,它适用于任何其他subnav。所以不幸的是,如果你想分页,你将不得不创建额外的subnavs。如果有人知道答案,那我就全身心投入。

希望能回答你的问题并且不会过于复杂或混乱。