सभी साइडबार नामों की सूची बनाएं?


14

मैं उस तरह सभी साइडबार सूचीबद्ध कर रहा हूँ:

global $wp_registered_sidebars;

echo '<pre>';
print_r($wp_registered_sidebars); 
echo '</pre>'

इसलिए मुझे कुछ मिल रहा है:

Array
(
    [sidebar-1] => Array
        (
            [name] => Sidebar #1
            [id] => sidebar-1
            [description] => Sidebar number 1
            [before_widget] => 
            [after_widget] => 
            [before_title] => 
            [after_title] =>
        )

 (...)

)

लेकिन मैं उन्हें एक चयनित सूची के रूप में प्रदर्शित करना पसंद करूंगा, जैसे:

<select>
  <option value ="SIDEBAR-ID">SIDEBAR-NAME/option>
  <option value ="SIDEBAR-ID">SIDEBAR-NAME/option>
(...)
</select>

वर्डप्रेस कोडेक्स बिल्कुल भी मददगार नहीं है।

धन्यवाद!


आप वास्तव में साइडबार कहां सूचीबद्ध कर रहे हैं और इसका क्या उद्देश्य है?
kaiser

जवाबों:


23

वैश्विक माध्यम से लूप:

<select>
<?php foreach ( $GLOBALS['wp_registered_sidebars'] as $sidebar ) { ?>
     <option value="<?php echo ucwords( $sidebar['id'] ); ?>">
              <?php echo ucwords( $sidebar['name'] ); ?>
     </option>
<?php } ?>
</select>

नोट: समारोह केवल वहाँ है यह वास्तव में प्रदर्शित करने के लिए के रूप में आप से पूछा। यकीन नहीं होता अगर आप वाकई ऐसा चाहते हैं।
ucwords()


वैश्विक सरणियों और वस्तुओं तक कैसे पहुँचें:

वैसे भी: आपका क्यू ज्यादातर सरणियों का उपयोग करने के बारे में है। मैंने इसके बारे में (आगे स्पष्टीकरण के लिए) एक क्यू लिखा। कृपया यहाँ पर एक नज़र डालें।


6

आपके लिए सूची बनाने के लिए एक फ़ंक्शन लिखें?

function sidebar_selectbox( $name = '', $current_value = false ) {
    global $wp_registered_sidebars;

    if ( empty( $wp_registered_sidebars ) )
        return;

    $name = empty( $name ) ? false : ' name="' . esc_attr( $name ) . '"';
    $current = $current_value ? esc_attr( $current_value ) : false;     
    $selected = '';
    ?>
    <select<?php echo $name; ?>>
    <?php foreach ( $wp_registered_sidebars as $sidebar ) : ?>
        <?php 
        if ( $current ) 
            $selected = selected( $current === $sidebar['id'], true, false ); ?>    
        <option value="<?php echo $sidebar['id']; ?>"<?php echo $selected; ?>><?php echo $sidebar['name']; ?></option>
    <?php endforeach; ?>
    </select>
    <?php
}

इसके बाद जहां कहीं भी आपको साइडबार के साथ चयन सूची बनाने की आवश्यकता हो, उसे कॉल करें, वैकल्पिक रूप से एक नाम से गुजरना, जैसे।

sidebar_selectbox();

या

sidebar_selectbox( 'theme_sidebars' );

इसके अतिरिक्त और वैकल्पिक रूप से, वर्तमान में चयनित मान में पास करें ...

sidebar_selectbox( 'theme_sidebars', $var_holding_current );

उम्मीद है की वो मदद करदे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.