Cum să listezi toate numele de sidebars în WordPress?
30 mar. 2011, 02:00:16
Vizualizări: 18.1K
Voturi: 16
Listez toate sidebars-urile astfel:
global $wp_registered_sidebars;
echo '<pre>';
print_r($wp_registered_sidebars);
echo '</pre>'
Și obțin ceva de genul:
Array
(
[sidebar-1] => Array
(
[name] => Sidebar #1
[id] => sidebar-1
[description] => Sidebar number 1
[before_widget] =>
[after_widget] =>
[before_title] =>
[after_title] =>
)
(...)
)
Dar aș dori să le afișez ca o listă dropdown, în felul următor:
<select>
<option value ="SIDEBAR-ID">SIDEBAR-NAME/option>
<option value ="SIDEBAR-ID">SIDEBAR-NAME/option>
(...)
</select>
Codex-ul WordPress nu este deloc de ajutor în acest caz.
Mulțumesc!

Wordpressor
5.05K
Comentarii
Toate răspunsurile la întrebare
2
0
Iterare prin global:
<select>
<?php foreach ( $GLOBALS['wp_registered_sidebars'] as $sidebar ) { ?>
<option value="<?php echo ucwords( $sidebar['id'] ); ?>">
<?php echo ucwords( $sidebar['name'] ); ?>
</option>
<?php } ?>
</select>
Notă:
Funcția ucwords()
este folosită doar pentru a afișa exact așa cum ați cerut. Nu sunt sigur dacă chiar doriți asta.
Cum să accesați array-uri și obiecte globale:
Oricum: Întrebarea dumneavoastră este în principal despre cum să accesați array-uri. Am scris o întrebare despre asta (pentru explicații suplimentare). Vă rugăm să aruncați o privire aici.

kaiser
50.8K
30 mar. 2011 02:37:25
0
Scrie o funcție care să creeze lista pentru tine?
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
}
Apoi apeleaz-o oriunde ai nevoie să creezi o listă de selecție cu barele laterale, opțional trecând un nume, de exemplu:
sidebar_selectbox();
sau
sidebar_selectbox( 'theme_sidebars' );
Opțional, poți pasa și o valoare selectată în prezent...
sidebar_selectbox( 'theme_sidebars', $var_holding_current );
Sper că te ajută.

t31os
18.7K
30 mar. 2011 02:44:17
Întrebări similare
2
răspunsuri
4
răspunsuri
2
răspunsuri