Как я могу определить, активна ли страница BuddyPress в моей теме?
Я пытаюсь включить подменю в свою тему, но у меня возникают проблемы при переходе на страницы BuddyPress (в отличие от стандартных страниц WP, сообщений и т. Д.). В основном, я хочу, чтобы страницы (где это уместно) отображали подменю, ala:
Но когда я перехожу на страницы, которые существуют под контролем BuddyPress, я получаю следующее:
Я использую следующее для создания подменю:
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
}
}
Где я нахожусь сбиваешься с пути?
1 answers
РЕДАКТИРОВАТЬ: Я получил прямой и простой ответ от людей на форумах BuddyPress:
Существует тег шаблона с именем bp_current_component(), который возвращает логическое значение. Итак, короче говоря, чтобы узнать, находимся ли мы в настоящее время в разделе сайта, опубликованном BuddyPress, мы просто звоним:
if( bp_current_component() ){
...или, если мы хотим определить, когда мы НЕ находимся в области BuddyPress, обратное:
if( !bp_current_component() ){
Проще простого.
Итак, в целом код выглядит так:
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>';
}