wake-up-neo.com

Alle Namen der Seitenleiste auflisten?

Ich liste alle Seitenleisten so auf:

global $wp_registered_sidebars;

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

Also bekomme ich so etwas wie:

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

 (...)

)

Aber ich würde sie gerne als Auswahlliste anzeigen, wie zum Beispiel:

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

Wordpress Codex ist überhaupt nicht hilfreich.

Vielen Dank!

13
Wordpressor

Durch die globale Schleife:

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

Hinweis:
Die Funktion ucwords() dient nur dazu, sie genau so anzuzeigen, wie Sie es gewünscht haben. Ich bin mir nicht sicher, ob du das wirklich willst.


So greifen Sie auf globale Arrays und Objekte zu:

Wie auch immer: Bei Ihrem Q geht es hauptsächlich darum, wie Sie auf Arrays zugreifen. Ich habe eine Frage dazu geschrieben (zur weiteren Erklärung). Bitte werfen Sie einen Blick hier.

21
kaiser

Schreiben Sie eine Funktion, um die Liste für Sie zu erstellen?

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
}

Rufen Sie es dann einfach überall dort auf, wo Sie eine Auswahlliste mit den Seitenleisten erstellen möchten, und geben Sie optional einen Namen ein, z.

sidebar_selectbox();

oder

sidebar_selectbox( 'theme_sidebars' );

Zusätzlich und optional einen aktuell ausgewählten Wert übergeben ...

sidebar_selectbox( 'theme_sidebars', $var_holding_current );

Hoffentlich hilft das.

6
t31os