特定のグループに対して bp_get_options_nav() を呼び出すことは可能ですか? 投稿タイプが定義されたすべての投稿で、同じグループ内ナビゲーションを取得する必要があります。
投稿はスラッグによってグループに関連付けられており、グループには投稿 ID のメタがあり、投稿にはグループ ID のメタがあります (グループは投稿から作成されました)。それらの間のナビゲーションをシームレスにしようとしています。
特定のグループに対して bp_get_options_nav() を呼び出すことは可能ですか? 投稿タイプが定義されたすべての投稿で、同じグループ内ナビゲーションを取得する必要があります。
投稿はスラッグによってグループに関連付けられており、グループには投稿 ID のメタがあり、投稿にはグループ ID のメタがあります (グループは投稿から作成されました)。それらの間のナビゲーションをシームレスにしようとしています。
このURLを読む:-
http://www.generalthreat.com/2011/10/creating-a-buddypress-group-home-page/
または試してみてください
BuddyPressグループのホームページを作成する
ステップ1:アクティビティストリームを置き換えているため、アクティビティストリームの[アクティビティ]タブを作成します。
これを行うには、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テンプレートファイルを呼び出しています。このテンプレートは、後で説明するように、実際にはすべてのグループページのルーティングを処理します。
ステップ2:グループのテンプレートファイルを作成するホームページ
グループホームページを作成する場合は、その表示方法を制御する必要があります。これを行うには、テーマのグループ/単一ディレクトリにテンプレートファイルが必要です。好きなように呼び出すことができますが、このガイドでは、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>
これまでのところ、グループページにアクティビティストリームを表示しない新しい[アクティビティ]タブを作成するだけです。しかし、この最後のピースはすべてを機能させます:
ステップ3:テーマのgroups / 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以外の名前を使用した場合は、選択した名前と一致するようにその行を変更する必要があります。
アップデート!ステップ4–BuddyPressJSに新しいアクティビティの投稿を分類する方法を知らせます
これでアクティビティを更新できますが、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のハッキングの結果を楽しんでください。そして、あなたがグループホームページで本当にクールなことをするなら、私の方法でリンクを送ってください!