web-dev-qa-db-fra.com

Comment détecter si une page BuddyPress est active dans mon thème?

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:

http://skitch.com/zamoose/d12ns/about-us-delta-sigma-theta-sorority-inc-south-jersey-alumnae-chapter

Mais lorsque je navigue vers des pages existantes sous le contrôle de BuddyPress, je reçois les informations suivantes:

http://skitch.com/zamoose/d12nu/delta-sigma-theta-sorority-inc-south-jersey-alumnae-chapter

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?

2
ZaMoose

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>';
}
2
ZaMoose