वर्डप्रेस 3.0 में नए मेनू की कार्यक्षमता के साथ wp_list_pages () का उपयोग करके बाल पृष्ठ प्रदर्शित करने वाला मेनू बनाएं?


10

पहले, मैं वर्तमान में चयनित पैरेंट पेज जैसे लॉजिक का उपयोग करके बाल पृष्ठों को चुनिंदा रूप से लोड करने में सक्षम था:

if(  $post->post_parent ) {
  $children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
} else {
  $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
}

if ($children) { ?>
   <ul id="subnav">
     <?php echo $children; ?>
   </ul>
<?php 
} else {
}

नए रजिस्टर_नव_मेनस () / wp_nav_menu () कार्यक्षमता का उपयोग करके ऐसा करने के लिए एक देशी तरीका प्रतीत नहीं होता है। किसी को पता है कि मैं इस बिंदु पर एक साथ कैसे पैच कर सकता हूं?

यहाँ एक स्क्रीनशॉट है जिसे मैं प्राप्त करने की कोशिश कर रहा हूँ:

बाल मेनू स्क्रीनशॉट नीचे छोड़ें


यह कठिन है, क्योंकि wp_nav_menu पृष्ठ पदानुक्रम से संबंधित नहीं है (या उस मामले के लिए सभी पृष्ठ)। मुझे अब इसका जवाब देने के लिए मेनू के बारे में पर्याप्त जानकारी नहीं है, लेकिन यह एक बहुत ही दिलचस्प सवाल है।
जॉन पी बलोच

मैं इस प्रश्न को पूरी तरह से नहीं समझता। आप क्या खत्म करने की कोशिश कर रहे हैं? मैं कोड देख रहा हूं लेकिन मुझे संदर्भ नहीं मिला। एक साइट है जो चाहता है? एक स्क्रीनशॉट?
माइकस्किंकल

वह नए स्तर के मेन्यू एपीआई में सशर्त रूप से शीर्ष स्तर के मेनू आइटम के बाल आइटम जोड़ना चाहता है (यानी केवल अगर वह पेड़ संरचना सक्रिय है)।
जॉन पी बलोच

@ जॉन पी। बलोच - "केवल अगर पेड़ की संरचना सक्रिय है" क्या मतलब है? क्या हम केवल पेज की बात कर रहे हैं? पोस्ट, श्रेणियाँ, टैग, कस्टम पोस्ट, आदि के बारे में क्या? क्या वह इसे jQuery या सर्वर के माध्यम से क्लाइंट पर करना चाहता है? मुझे लगता है कि मैं नहीं मानूंगा और मैं वास्तविक उपयोग के मामले के बारे में अधिक सुनना चाहता हूं।
माइकस्किंकल

@MikeSchinkel इस विशेष मामले में, मुझे लगता है कि हम केवल पृष्ठों पर बात कर रहे होंगे, लेकिन यह वैसे भी मायने नहीं रखता है; समाधान अभी भी वही होगा। मुझे लगता है कि ZaMoose यह सर्वर-साइड करना चाहता है।
जॉन पी बलोच

जवाबों:


9

मैंने पेज सब नेविगेशन नाम से एक विजेट बनाया (चतुर मुझे पता है) जो मेरे लिए काम कर रहा है।

यदि आप इसे स्थापित करते हैं, तो आप विजेट को अपने विजेट क्षेत्रों में से एक में खींच सकते हैं और BAM यह काम कर सकता है।

<?php
/*
Plugin Name: Page Sub Navigation
Plugin URI: http://codegavin.com/wordpress/sub-nav
Description: Displays a list of child pages for the current page
Author: Jesse Gavin
Version: 1
Author URI: http://codegavin.com
*/

function createPageSubMenu()
{
  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;
    }

    $title = get_the_title($parent);

    if(wp_list_pages("title_li=&child_of=$parent&echo=0" )) {
      echo "<div id='submenu'>";
      echo "<h3><span>$title</span></h3>";
      echo "<ul>";
      wp_list_pages("title_li=&child_of=$parent&echo=1" );
      echo "</ul>";
      echo "</div>";
    }
  }
}


function widget_pageSubNav($args) {
  extract($args);
  echo $before_widget;
  createPageSubMenu();
  echo $after_widget;
}

function pageSubMenu_init()
{
  wp_register_sidebar_widget("cg-sidebar-widget", __('Page Sub Navigation'), 'widget_pageSubNav');
}
add_action("plugins_loaded", "pageSubMenu_init");
?>

या अगर आप सिर्फ रसदार भागों चाहते हैं ...

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" )) {
    wp_list_pages("title_li=&child_of=$parent&echo=1" );
  }
}

अपडेट करें

मुझे एक और प्लगइन मिला जो अनिवार्य रूप से एक ही चीज़ करता है (और शायद यह बेहतर है, मुझे नहीं पता)। http://wordpress.org/extend/plugins/subpages-widget/


यह एसओ है, इसलिए मुझे जो चाहिए, उसके करीब है। केवल समस्या यह है कि यह दुर्व्यवहार करता है जब बड्डीप्रेस सक्रिय होता है।
ज़ुमोज़

2

आप ऐसा करने के लिए एक सीएसएस हैक कर सकते हैं (2 तरीके जो मैं कोशिश करूंगा)

1 यह सबसे आसान तरीका है जिससे मैं यह सोच सकता हूं कि सीएसएस को उप-दायित्व में आइटम प्रदर्शित करें।

.current-menu-ancestor ul {display:inline;}
.current-menu-parent ul (display:inline;}

2 यह मानते हुए कि आपकी थीम बॉडी क्लासेस का समर्थन करती है, आप प्रत्येक "सब नेवी" के लिए एक नेवी मेन्यू बना सकते हैं, और उन्हें मुख्य नेविगेशन के नीचे प्रदर्शित करने के लिए सेट कर सकते हैं - फिर अपनी स्टाइलशीट को एडिट करके सबनव डिव का उपयोग कुछ इस तरह दिखा सकते हैं:

.child-menu-about, .child-menu-leadership {display:none;}
body.page-id-YOUR_ABOUT_PAGE_ID .child-menu-about {display:inline;}
body.category-YOUR-CATEGORY-SLUG  .child-menu-leadership {display:inline;}

0

यहाँ छवि विवरण दर्ज करें 1 यह php डिस्प्ले है।

यहाँ छवि विवरण दर्ज करें 2 यह css डिस्प्ले है।


कोड स्क्रीनशॉट के रूप में उत्तर पोस्ट करना सबसे खराब संभव तरीका है - कृपया अपने उत्तर को फिर से लिखें। स्पष्टीकरण के कुछ शब्दों को भी चोट नहीं पहुंचेगी।
पिकार्ड

0
<nav class="site-nav children-link">
                <?php       

                    if(  $post->post_parent ) 
                    {
                      $children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
                    } 
                    else 
                    {
                      $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
                    }

                    if ($children) { ?>
                       <ul>

                            <?php echo $children; ?>

                       </ul>

                    <?php 
                        } else {
                        }
                ?>
        </nav>

सीएसएस

/*children-links links*/

.children-link 
{       

        background-color: #1a5957;
        color:#FFF;
        font-size: 100%;

}

.children-link li
{
    margin: 10px;   


}

.children-link ul li a:link,
.children-link ul li a:visited 
{
        padding: 15px 17px;
        text-decoration: none;
        border: 1px solid #1a5957;

}
.children-link ul li a:hover 
{
        background-color: #1a5957;
        color:#FFF;
        font-weight: bold;

}
.children-link .current_page_item a:link,
.children-link .current_page_item a:visited
{

    background-color: #1a5957;
    color: #FFF;
    cursor: default;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.