Comment puis-je détecter si une page BuddyPress est active à partir de mon thème?
-
16-10-2019 - |
Question
Je suis en train de sous-menus travaux dans mon thème, mais je suis en cours d'exécution dans les problèmes lors de la navigation sur les pages BuddyPress (par opposition aux pages standard WP, ??messages, etc.). Au fond, ce que je veux faire est d'avoir des pages (le cas échéant) afficher un sous-menu, ala:
Mais quand je navigue sur des pages qui existent sous le contrôle de BuddyPress, je reçois les points suivants:
J'utilise ce qui suit 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ù suis-je égaré?
La solution
EDIT: J'ai reçu une réponse directe, facile des gens sur les forums de BuddyPress:
Il y a une étiquette de modèle appelé bp_current_component () qui retourne un booléen. Donc, en bref, de savoir si nous sommes actuellement dans une section isé BuddyPress du site, nous appelons simplement:
if( bp_current_component() ){
... ou, si l'on veut détecter quand nous ne sommes pas dans une zone de BuddyPress, l'inverse:
if( !bp_current_component() ){
Facile comme bonjour.
Ainsi, au total, les regards de code comme 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>';
}