是否可以为特定组调用bp_get_options_nav()?我需要在每个帖子中使用定义的帖子类型获得相同的组内导航。
帖子通过slugs与Groups相关联,并且该组都有一个post id元组,帖子有一个meta id元组(组是从帖子创建的),我试图在它们之间进行导航无缝的。
答案 0 :(得分:2)
阅读此网址: -
http://www.generalthreat.com/2011/10/creating-a-buddypress-group-home-page/
或尝试
创建BuddyPress组主页
第一步:为活动流创建一个活动标签,因为我们正在替换它。
为此,我们将使用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黑客攻击结果。如果您使用组主页做一些非常酷的事情,请发送链接!