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?
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.