web-dev-qa-db-fra.com

fonction get_option

J'essaie actuellement de créer mon propre thème, mais je ne sais pas trop comment fonctionne la fonction get_option (), car pourquoi cela se produit-il?.

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

..both renvoie 1 (mais Dreamweaver n'aime pas la deuxième option). Tandis que

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

..simply renvoie 'sultenhest_theme_social_options', ce qui est incorrect.

Une option serait de définir le tableau en tant que tel

$social_options = get_option( 'sultenhest_theme_social_options' );

et l'appelle comme ça

echo $social_options['Twitter'];

Il renvoie la chaîne correcte, mais il ne fonctionne que dans le fichier header.php (si le tableau y est défini) et non dans, par exemple. footer.php.


UPDATE: Après partiellement ialocin et Brad Dalton, je suis arrivé à cette solution, qui fonctionne comme un charme:

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

et en le faisant écho comme ceci:

echo sultenhest('social_options', 'Twitter') ? '<a href="' . sultenhest('social_options', 'Twitter') . '">Twitter</a>' : '';
2
Sultenhest

Vous utilisez get_option() faux, première variante, jetez donc un autre regard sur la documentation get_option() . En gros, vous ne pouvez pas accéder directement à un élément de tableau avec la fonction, il ne le prend tout simplement pas en charge.

La deuxième variante devrait être possible, mais vous avez besoin d'au moins PHP 5.4 - si je ne me trompe pas totalement; Je ne sais rien de Dreamweaver.

La raison pour laquelle vous ne pouvez pas accéder à la variable partout où vous le souhaitez est la portée de la variable, à lire en détail sur PHP Manual: Variable scope .

La chose la plus facile que j'imagine est de le faire à l'ancienne, il suffit de créer une fonction que vous pouvez utiliser. Un exemple comme celui-ci:

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;
    }
}
3
Nicolai