web-dev-qa-db-fra.com

Stockage des options dans un shortcode

Je crée un plugin Wordpress. Je veux créer un seul shortcode qui modifie la sortie en fonction des paramètres modifiés par l'utilisateur sur la page des paramètres d'administration.

Donc pour commencer, j'ai quelque chose comme ça ci-dessous:

add_shortcode( 'my_shortcode', 'my_shortcode');
  function my_shortcode($atts) {
    $atts = shortcode_atts (
  array (
  'display' => get_option('setting_1'),
  'toolbar' => get_option('setting_2'),
  'branding' => get_option('setting_3')
  ), $atts);
     }

Que dois-je faire ensuite pour stocker ces paramètres dans un seul shortcode qui conserve son nom malgré le changement des paramètres?

1
Rob Myrick

Si vous souhaitez modifier l'affichage en fonction des options de l'administrateur, vous n'avez pas du tout besoin de traiter le shortcode_atts et le $attributes qui sont passés dans votre rappel. Les attributs transmis (et définis par shortcode_atts) sont censés modifier le fonctionnement d'un shortcode en fonction de la manière dont il est utilisé par l'utilisateur final.

Prenez ceci: [wpse75238 arg1="asdf" arg2="asdf"]

<?php
add_shortcode('wpse75238', 'wpse75238_shortcode_cb');
function wpse75238_shortcode_cb($atts)
{
    return var_export($atts);
}

Quelque chose comme array ( 'arg1' => 'asdf', 'arg2' => 'asdf' ) va sortir.

shortcode_atts définit simplement les valeurs par défaut pour vous (et supprime les clés "non autorisées") de la même manière que wp_parse_args .

Si vous souhaitez simplement modifier des éléments en fonction d'une option de page d'administration, vous n'avez pas besoin de respecter les entrées de l'utilisateur.

<?php
add_shortcode('wpse75238', 'wpse75238_shortcode_cb');
function wpse75238_shortcode_cb()
{
    if('some_value' = get_option('wpse75238_opts'))
    {
        // do stuff because some_value was set.
    }
}

Appeler le shortcode avec des arguments ne changera rien au shortcode ci-dessus.

2
chrisguitarguy