J'essaie d'intégrer des sous-menus à mon thème, mais je rencontre des problèmes lors de la navigation vers les pages BuddyPress (par opposition aux pages standard WP, messages, etc.). En gros, ce que je veux, c’est que les pages (le cas échéant) affichent un sous-menu, par exemple:
Mais lorsque je navigue vers des pages existantes sous le contrôle de BuddyPress, je reçois les informations suivantes:
J'utilise les éléments suivants pour générer le sous-menu:
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
}
}
Où vais-je m'égarer?
EDIT: J'ai reçu une réponse directe et facile des personnes sur les forums BuddyPress:
Il existe une balise de modèle appelée bp_current_component () qui renvoie un booléen. Donc, en bref, pour savoir si nous sommes actuellement dans une section du site BuddyPress-ized, nous appelons simplement:
if( bp_current_component() ){
... ou si nous voulons détecter quand nous ne sommes pas dans une zone BuddyPress, l'inverse:
if( !bp_current_component() ){
Peasy facile.
Donc, au total, le code ressemble à ceci:
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>';
}