2

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

谢谢!

4

1 回答 1

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 并更改必要的元素来创建其他 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 文档中的任何一个。

警告词:据我所知,分页不适用于默认子导航。我一直无法让它工作。但是,它确实适用于任何其他子导航。所以不幸的是,如果你想分页,你将不得不创建额外的子导航。如果有人知道这个问题的答案,那么我自己就会全神贯注。

希望这能回答您的问题,并且不会太复杂或令人困惑。

于 2013-12-15T01:30:17.110 回答