แสดงชื่อแถบข้างทั้งหมดหรือไม่


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>

Wordpress Codex ไม่มีประโยชน์เลย

ขอขอบคุณ!


คุณระบุรายชื่อแถบด้านข้างไว้ที่ใดและสิ่งนี้มีจุดประสงค์อะไร
ไกเซอร์

คำตอบ:


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()


วิธีเข้าถึงอาร์เรย์และวัตถุระดับโลก:

อย่างไรก็ตาม: Q ส่วนใหญ่ของคุณเกี่ยวกับวิธีการเข้าถึงอาร์เรย์ ฉันเขียนคำถามเกี่ยวกับเรื่องนั้น (สำหรับคำอธิบายเพิ่มเติม) โปรดดูที่นี่


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 );

หวังว่าจะช่วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.