Afficher tous les shortcodes disponibles dans l’éditeur

Un champ select pour afficher tous ses shortcodes

A la suite de cet article, j’ai trouvé un bout de code qui permet l’affichage de tous les shortcodes disponibles pour son thème, plugin compris. Cela peut éviter de créer des boutons supplémentaires dans la page d’édition d’un article ou d’une page, cette fonction les regroupe tous sous la forme d’un select.

add_action('media_buttons','cc_select',11);
function cc_select(){
global $shortcode_tags;
echo ' <select id="cc_select"><option>Shortcode</option>';
foreach ($shortcode_tags as $key => $val){
if($key){
$shortcodes_select .= '<option value="['.$key.'][/'.$key.']">'.$key.'</option>';
}
}
echo $shortcodes_select;
echo '</select>';
}
add_action('admin_head', 'button_js');
function button_js() {
echo '<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#cc_select").change(function() {
send_to_editor(jQuery("#cc_select :selected").val());
return false;
});
});
</script>';
}

Choisir les shortcodes à afficher

Si on souhaite appliquer cette méthode et supprimer certains shortcodes inutiles, on peut rajouter une exclusion à notre fonction, en choisissant à la suite les différents shortcodes que l’on veut ignorer dans la liste :

add_action('media_buttons','cc_select',11);
function cc_select(){
global $shortcode_tags;
/* ------------------------------------- */
/* mettre le nom des shortcodes à supprimer de la liste ci dessous*/
/* ------------------------------------- */
$exclude = array("video", "audio");
echo ' <select id="cc_select"><option>Shortcode</option>';
foreach ($shortcode_tags as $key => $val){
if(!in_array($key,$exclude)){
$shortcodes_select .= '<option value="['.$key.'][/'.$key.']">'.$key.'</option>';
}
}
echo $shortcodes_select;
echo '</select>';
}
add_action('admin_head', 'button_js');
function button_js() {
echo '<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#cc_select").change(function() {
send_to_editor(jQuery("#cc_select :selected").val());
return false;
});
});
</script>';
}

Si l’on veut juste afficher un shortcode que l’on a crée, sous forme de select, je vous reporte à l’article suivant