Funzione get_option

27 feb 2015, 23:16:14
Visualizzazioni: 17K
Voti: 4

Sto cercando di creare il mio tema personalizzato, ma non sono sicuro di come funzioni la funzione get_option(), perché questo...

echo get_option('show_header', 'sultenhest_theme_display_options');
echo get_option('sultenhest_theme_display_options')['show_header'];

...restituisce entrambi 1 (ma Dreamweaver non gradisce la seconda opzione). Mentre

echo get_option('twitter', 'sultenhest_theme_social_options');

...restituisce semplicemente 'sultenhest_theme_social_options', che è errato.

Un'opzione sarebbe definire l'array così

$social_options = get_option( 'sultenhest_theme_social_options' );

e chiamarlo in questo modo

echo $social_options['twitter'];

Restituisce la stringa corretta, ma funziona solo nel file header.php (se l'array è definito lì) e non in, ad esempio, footer.php.


AGGIORNAMENTO: Seguendo in parte ialocin e Brad Dalton ho trovato questa soluzione, che funziona perfettamente:

function sultenhest($option, $arg){
  $the_array = array();
  foreach( get_option('sultenhest_theme_'.$option) as $key => $item ){
    $the_array[$key] = $item;
  }
  return $the_array[$arg];
}

e richiamarlo così:

echo sultenhest('social_options', 'twitter') ? '<a href="' . sultenhest('social_options', 'twitter') . '">Twitter</a>' : '';
0
Tutte le risposte alla domanda 1
1

Stai utilizzando get_option() in modo errato, prima variante, quindi dai un'altra occhiata alla documentazione di get_option(). Fondamentalmente non puoi accedere direttamente a un elemento dell'array con la funzione, semplicemente non lo supporta.

La seconda variante dovrebbe essere possibile, ma hai bisogno almeno di PHP 5.4 - se non mi sbaglio totalmente; non so nulla riguardo a Dreamweaver.

Il motivo per cui non puoi accedere alla variabile ovunque vuoi è l'ambito della variabile, leggi a riguardo sul Manuale PHP: Ambito delle variabili.

La cosa più semplice che mi viene in mente è farlo alla vecchia maniera, crea una funzione che puoi utilizzare. Ad esempio così:

function wpse_179693_echo_my_options_array_value() {
    $social_options = get_option( 'sultenhest_theme_social_options' );
    if ( isset( $social_options['twitter'] ) ) {
        echo $social_options['twitter'];
    } else {
        return FALSE;
    }
}
27 feb 2015 23:29:32
Commenti

get_option('some_option')['some_key'] in realtà funziona in PHP 5.4, si chiama dereferenziazione di array.

Milo Milo
28 feb 2015 01:00:50