it-swarm.asia

كيف يمكنني اكتشاف ما إذا كانت صفحة BuddyPress نشطة من داخل موضوعي؟

أحاول تشغيل القوائم الفرعية في موضوعي ، لكنني أواجه مشكلات عند الانتقال إلى صفحات BuddyPress (على عكس الصفحات القياسية WP ، المنشورات ، إلخ). في الأساس ، ما أريد القيام به هو أن تعرض الصفحات (عند الاقتضاء) قائمة فرعية ، علاء:

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

لكن عندما أتنقل إلى الصفحات الموجودة تحت سيطرة BuddyPress ، أحصل على ما يلي:

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

أستخدم ما يلي لإنشاء القائمة الفرعية:

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

إلى أين سأضل؟

2
ZaMoose

تحرير: تلقيت إجابة مباشرة وسهلة من الناس على منتديات 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>';
}
2
ZaMoose