サブメニューをテーマに組み込もうとしていますが、BuddyPressページに移動するときに問題が発生しています(標準のWPページ、投稿などとは対照的に)。基本的に、私がやりたいことはサブメニューalaをページに表示することです(適切な場合)。
しかし、BuddyPressの管理下にあるページに移動すると、次のようになります。
私はサブメニューを生成するために以下を使っています:
if (is_page()) {
global $wp_query;
if( empty($wp_query->post->post_parent) ) {
$parent = $wp_query->post->ID;
} else {
$parent = $wp_query->post->post_parent;
}
if(wp_list_pages("title_li=&child_of=$parent&echo=0" )) { ?>
<ul id="subnav">
<?php
wp_list_pages("title_li=&child_of=$parent&echo=1" );
?>
</ul>
<?php
}
}
私はどこに迷いますか?
編集:私はBuddyPressフォーラムで人々から直接、簡単な答えを受け取りました:
ブール値を返すbp_current_component()というテンプレートタグがあります。つまり、現在、サイトのBuddyPress対応のセクションにいるかどうかを確認するために、単に次のように呼び出します。
if( bp_current_component() ){
...または、BuddyPressエリアにいないことを検出したい場合は、その逆になります。
if( !bp_current_component() ){
簡単です。
したがって、全体として、コードは次のようになります。
if( !bp_current_component() ){
if ( is_page() ) {
if( empty( $wp_query->post->post_parent ) ) {
$parent = $wp_query->post->ID;
} else {
$parent = $wp_query->post->post_parent;
}
if( wp_list_pages( "title_li=&child_of=$parent&echo=0" ) ) {
echo '<ul id="subnav">';
wp_list_pages( "title_li=&child_of=$parent&echo=1" );
echo '</ul>';
}
}
} else {
echo '<ul id="subnav">';
if ( is_user_logged_in() ){
bp_get_loggedin_user_nav();
} else {
bp_get_displayed_user_nav();
}
echo '</ul>';
}