Funcția get_option în WordPress - Cum să obții corect opțiunile temei
Încerc să-mi creez propria temă WordPress, dar nu sunt sigur cum funcționează corect funcția get_option(). De exemplu, cum se face că acestea...
echo get_option('show_header', 'sultenhest_theme_display_options');
echo get_option('sultenhest_theme_display_options')['show_header'];
...returnează ambele valoarea 1 (dar Dreamweaver nu prea apreciază a doua variantă). În timp ce...
echo get_option('twitter', 'sultenhest_theme_social_options');
...returnează simplu 'sultenhest_theme_social_options', ceea ce este incorect.
O opțiune ar fi să definesc array-ul astfel:
$social_options = get_option( 'sultenhest_theme_social_options' );
și să-l apelez astfel:
echo $social_options['twitter'];
Returnează șirul corect, dar funcționează doar în header.php (dacă array-ul este definit acolo) și nu în, de exemplu, footer.php.
ACTUALIZARE: Urmând parțial sfaturile lui ialocin și Brad Dalton, am ajuns la această soluție care funcționează perfect:
function sultenhest($option, $arg){
$the_array = array();
foreach( get_option('sultenhest_theme_'.$option) as $key => $item ){
$the_array[$key] = $item;
}
return $the_array[$arg];
}
și o apelez astfel:
echo sultenhest('social_options', 'twitter') ? '<a href="' . sultenhest('social_options', 'twitter') . '">Twitter</a>' : '';

Folosești get_option()
greșit, prima variantă, așa că aruncă o privire din nou la documentația get_option()
. Practic, nu poți accesa direct un element de matrice cu funcția, pur și simplu nu suportă acest lucru.
A doua variantă ar trebui să fie posibilă, dar ai nevoie de cel puțin PHP 5.4 - dacă nu mă înșel total; nu știu nimic despre Dreamweaver.
Motivul pentru care nu poți accesa variabila oriunde dorești este domeniul de aplicare al variabilei, citește mai multe despre acest lucru în Manualul PHP: Domeniul de aplicare al variabilelor.
Cea mai simplă soluție pe care mi-o imaginez este să o faci în modul vechi, pur și simplu să creezi o funcție pe care o poți folosi. Exemplu:
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;
}
}

get_option('some_option')['some_key']
funcționează de fapt în PHP 5.4, acest lucru se numește dereferențiere de array.
