Eu estou tentando trabalhar sub-menus no meu tema, mas estou correndo em problemas ao navegar para páginas BuddyPress (em oposição a padrão WP páginas, posts, etc.). Basicamente, o que eu quero fazer é ter páginas (quando apropriado) exibir um submenu, ala:
Mas quando eu navego para páginas que existem sob o controle do BuddyPress, recebo o seguinte:
Eu estou usando o seguinte para gerar o submenu:
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
}
}
Onde estou me desviando?
EDIT: Eu recebi uma resposta direta e fácil do pessoal sobre os fóruns de BuddyPress:
Existe uma tag de template chamada bp_current_component () que retorna um booleano. Então, em suma, para dizer se estamos atualmente em uma seção do site BuddyPress, simplesmente chamamos:
if( bp_current_component() ){
... ou, se queremos detectar quando não estamos em uma área BuddyPress, o inverso:
if( !bp_current_component() ){
Mole-mole.
Então, no total, o código se parece com isso:
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>';
}