Temamda alt menüler çalışmaya çalışıyorum, ancak BuddyPress sayfalarına (standart WP sayfalar, yazılar vb. Tersine) giderken sorunlarla karşılaşıyorum. Temel olarak, yapmak istediğim sayfaların (uygun olduğunda) ala, alt bir menü göstermesi:
Ancak BuddyPress'in kontrolü altında bulunan sayfalara gittiğimde aşağıdakileri alıyorum:
Alt menüyü oluşturmak için aşağıdakileri kullanıyorum:
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
}
}
Nereye sapıyorum?
EDIT: BuddyPress forumlarındaki arkadaşlardan doğrudan ve kolay bir cevap aldım:
Bir boole döndüren bp_current_component () adında bir şablon etiketi vardır. Yani, kısaca, şu anda sitenin BuddyPress-ized bölümünde olup olmadığımızı söylemek için basitçe:
if( bp_current_component() ){
... ya da, bir BuddyPress bölgesinde olmadığımızı tespit etmek istiyorsak, tersi:
if( !bp_current_component() ){
Basit.
Yani, toplamda, kod şöyle görünür:
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>';
}