novembre

29

2015

Romain

Les shortcodes WordPress

Les shortcodes sont des fonctions qui permettent de proposer un traitement avancé à l'utilisateur dans WordPress en mettant à dispositions une fonction spécifique dans l'éditeur de texte, le shortcode le plus connu de WordPress est [ gallery id="123" size="medium"] qui permet d'afficher une galerie préformatée, un espace a été rajouté entre le [ et le mot clef gallery dans l'article pour que le shortcode ne soit pas traité lors de son affichage. Le shortcode est une fonction qui est codée en backend et appelé en frontend lors de l'affichage de l'article, un des shortcodes implémenter pour mettre en forme l'affichage des langages de programmation sur ce site ressemble en backend à ceci:

/**
 * function for shortcode code
 * usage [ codedisplay language="php"] "some code" [ /codedisplay]
 * @param mixed $atts
 * @param string $content
 * @return strinh
 */
function code_display_function( $atts , $content)
{
	//permet de récupérer la valeur des attributs
	extract( shortcode_atts( 
                array(
                    'language' => 'php' //le language par défaut est php
                ), 
                $atts )
            );
        $display = '
'.$content.'
'; wp_enqueue_style('prism-css', CUSTOM_POST_PLUG_URL.'css/prism.css'); wp_enqueue_script('prism-js', CUSTOM_POST_PLUG_URL.'js/prism.js', array(), true); return $display; } add_shortcode('codedisplay' , 'code_display_function');

C'est un shortcode fermant, qui contrairement à celui de la galerie traite le contenu entre les deux balises [][/] du texte, la différence principale entre un shortcode fermant et non fermant est le nombre d'arguments attendus par la fonction, les shortcodes non fermants comme la galerie ne cherchent pas de balise fermante correspondant à son code. Il est conseillé de mettre une valeur par défaut pour les attributs quand plusieurs valeurs sont attendues, certains pouvant être optionnelle, le shortcode de la galerie est valide avec ou sans l'attribut size par exemple. Les shortcode sont automatiquement traités par la fonction do_shortcode($content) lors de l'affichage d'un article avec la fonction the_content() car elle est enregistrée pour le "Hook" the_content, cependant la fonction get_the_content() ne l'appelle pas automatiquement pour vous permettre de traiter le contenu avant de l'afficher, car on peut afficher directement une valeur dans la fonction du shortcode avec un echo, de ce fait si vous utilisez cette fonction, il faut appliquer la fonction manuellement:

$content = get_the_content();
//divers traitement appliqué au contenu
echo do_shortcode($content);

Tags: Web - -