it-swarm-vi.tech

Làm thế nào có thể làm được

Tôi đang cố gắng làm việc các menu phụ vào chủ đề của mình nhưng đang gặp vấn đề khi điều hướng đến các trang BuddyPress (trái ngược với các trang WP tiêu chuẩn, bài đăng, v.v.). Về cơ bản, những gì tôi muốn làm là có các trang (khi thích hợp) hiển thị một menu phụ, ala:

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

Nhưng khi tôi điều hướng đến các trang tồn tại dưới sự kiểm soát của BuddyPress, tôi nhận được những điều sau:

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

Tôi đang sử dụng cách sau để tạo menu phụ:

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 
  }
}

Tôi sẽ đi lạc ở đâu?

2
ZaMoose

EDIT: Tôi đã nhận được câu trả lời trực tiếp, dễ dàng từ mọi người trên các diễn đàn BuddyPress:

Có một thẻ mẫu được gọi là bp_civerse_component () trả về boolean. Vì vậy, trong ngắn hạn, để biết liệu chúng tôi hiện đang ở trong phần bị đóng băng BuddyPress của trang web, chúng tôi chỉ cần gọi:

if( bp_current_component() ){

... hoặc, nếu chúng tôi muốn phát hiện khi chúng tôi KHÔNG ở trong khu vực BuddyPress, thì ngược lại:

if( !bp_current_component() ){

Dễ như ăn bánh.

Vì vậy, trong tổng số, mã trông như thế này:

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