集团外的bp_get_options_nav?

时间:2012-07-27 07:20:54

标签: php wordpress buddypress bbpress

是否可以为特定组调用bp_get_options_nav()?我需要在每个帖子中使用定义的帖子类型获得相同的组内导航。

帖子通过slugs与Groups相关联,并且该组都有一个post id元组,帖子有一个meta id元组(组是从帖子创建的),我试图在它们之间进行导航无缝的。

1 个答案:

答案 0 :(得分:2)

阅读此网址: -

http://www.generalthreat.com/2011/10/creating-a-buddypress-group-home-page/

https://wordpress.stackexchange.com/questions/58485/adding-navigation-item-page-for-quick-chat-plugin-to-each-of-my-buddypress-group

或尝试

创建BuddyPress组主页

enter image description here

第一步:为活动流创建一个活动标签,因为我们正在替换它。

为此,我们将使用Group Extension API的一部分为该组创建一个新的导航项。

在主题的functions.php中,添加以下内容:

function add_activity_tab() {
    global $bp;

    if(bp_is_group()) {
        bp_core_new_subnav_item( 
            array( 
                'name' => 'Activity', 
                'slug' => 'activity', 
                'parent_slug' => $bp->groups->current_group->slug, 
                'parent_url' => bp_get_group_permalink( $bp->groups->current_group ), 
                'position' => 11, 
                'item_css_id' => 'nav-activity',
                'screen_function' => create_function('',"bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) );"),
                'user_has_access' => 1
            ) 
        );

        if ( bp_is_current_action( 'activity' ) ) {
            add_action( 'bp_template_content_header', create_function( '', 'echo "' . esc_attr( 'Activity' ) . '";' ) );
            add_action( 'bp_template_title', create_function( '', 'echo "' . esc_attr( 'Activity' ) . '";' ) );
        }
    }
}

add_action( 'bp_actions', 'add_activity_tab', 8 );

这会在每个组的导航栏中添加一个名为“活动”的标签,指向该组中名为“活动”的页面。此新活动页面调用与当前主页相同的groups / single / home.php模板文件。该模板实际上处理所有组页面的路由,我们将在一分钟内看到。

第二步:为您的论坛主页

创建模板文件

如果您要拥有群组主页,则需要控制其显示方式。为此,您需要在主题的组/单个目录中使用模板文件。它可以被称为任何你想要的,但对于本指南,我们坚持使用front.php。

创建此文件并在其中放入您想要的任何内容。此模板将位于“组循环”中,因此您可以使用bp_group_description()等函数来显示组信息。

以下是一个例子:

<div class="home-page single-group" role="main">
<?php if(bp_is_item_admin()) { ?>
    <div class="notice info">
        <p>Welcome to your group home page!<br />
        Click <a href="<?php bp_group_admin_permalink() ?>">Admin</a> above to set the content for this page.</p>
    </div>
<?php } ?>
<?php bp_group_description(); ?>
</div>

到目前为止,我们所做的只是在组页面上创建一个新的“活动”选项卡,该选项卡甚至不显示活动流。但最后这篇文章将使一切顺利:

第三步:修改主题的群组/ single / home.php模板文件

在home.php文件中查找此部分:

elseif ( bp_group_is_visible() && bp_is_active( 'activity' ) ) :
    locate_template( array( 'groups/single/activity.php' ), true );

elseif ( bp_group_is_visible() ) :
   locate_template( array( 'groups/single/members.php' ), true );

这会将访问者定向到活动流或成员列表,具体取决于是否已启用活动。这是一个包罗万象的路由部分,我们将在这里添加我们的组主页。

将上面的行更改为:

elseif ( bp_group_is_visible() && bp_is_group_activity() ) :
    locate_template( array( 'groups/single/activity.php' ), true );

elseif ( bp_group_is_visible() ) :
    locate_template( array( 'groups/single/front.php' ), true );

这使“活动”选项卡能够将组主页的请求发送到新模板!当然,如果您使用的是front.php以外的名称,则需要更改该行以匹配您选择的名称。

更新!第四步 - 让BuddyPress JS知道如何对新活动帖子进行分类

现在您可以进行活动更新,但BuddyPress不会记得它们来自您的群组。为了解决这个问题,我们需要放松检查另一个文件,activity / post-form.php。

<?php elseif ( bp_is_group_home() ) : ?>

    <input type="hidden" id="whats-new-post-object" name="whats-new-post-object" value="groups" />
    <input type="hidden" id="whats-new-post-in" name="whats-new-post-in" value="<?php bp_group_id(); ?>" />

<?php endif; ?>

没有这些隐藏的字段,BuddyPress认为我们只是发布个人状态更新。所以让我们扩展它以涵盖我们新的活动页面:

<?php elseif ( bp_is_group() ) : ?>

    <input type="hidden" id="whats-new-post-object" name="whats-new-post-object" value="groups" />
    <input type="hidden" id="whats-new-post-in" name="whats-new-post-in" value="<?php bp_group_id(); ?>" />

<?php endif; ?>

现在BuddyPress会将更新绑定到一个组,无论我们发布它的组在哪里。

就是这样!查看您的新组主页,享受您的BuddyPress黑客攻击结果。如果您使用组主页做一些非常酷的事情,请发送链接!