Comment créer un shortcode avec paramètre(s) ?

Dernièrement nous parlions des shortcodes, voyons maintenant comment passer un ou plusieurs paramètres du shortcode à votre fonction d’appel.

Si vous ne savez pas ce qu’est ou comment fonctionne un shortcode, ou que vous souhaitez un shortcode sans paramètres, référez-vous à notre guide sur le shortcodes.

Dans ce nouveau guide nous partons sur le même exemple que dans ce précédent article.

Comment passer un paramètre dans un Shortcode WordPress ?

Comme nous l’expliquions précédemment les shortcodes ont l’avantage d’êtres flexibles et d’offrir la possibilité de passer simplement des paramètres à notre fonction, notre shortcode ressemblera alors à : [wpln_derniers-articles articles= »5″] ou [wpln_derniers-articles]un titre[/wpln_derniers-articles].

Nous allons donc ajouter 2 nouvelles fonctions à notre fonction d’appel :

  • shortcodes_att() qui est une fonction native de WordPress qui permet justement d’ajouter des attributs à notre shortcode et de le passer à notre fonction.
  • extract() qui est une fonction native de php qui nous permettra de récupérer dans notre fonction les différents attributs s’ils sont multiples.

Voici à quoi ressemble alors notre nouvelle fonction (vous pouvez facilement comparer et repérer l’ajout de ces 2 nouvelles fonction qui se situe en début de code) :

function wpln_derniers-articles($atts){
   extract(shortcode_atts(array(
      'articles' => 1,
   ), $atts));

   $return_string = '<ul>';
   query_posts(array('orderby' => 'date', 'order' => 'DESC' , 'showposts' => $posts));
   if (have_posts()) :
      while (have_posts()) : the_post();
         $return_string .= '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
      endwhile;
   endif;
   $return_string .= '</ul>';

   wp_reset_query();
   return $return_string;
}

Vous voyez donc que nous définissons un paramètre par défaut (ici ‘articles’ => 1) la « , » sers alors à définir un éventuel paramètre si définis par l’attribut « articles= ».

Faites le test chez-vous. Changez votre fonction dans votre fichier functions.php et appelez-maintenant le shortcode [wpnl_derniers-articles articles= »5″] dans un de vos articles et voyez le résultat.

Comment passer un texte à un shortcode en plus d’un attribut ?

C’est bien beau tout ça, mais si je veux ajouter par défaut un titre h3 ou un texte à mon shortcode ? Ne vous affolez-pas ce n’est pas bien compliquer non plus.

Nous allons simplement ajouter un second paramètre à notre fonction (ou un premier c’est selon le cas) que nous appellerons $content et que nous retournerons dans un h3 ou p c’est selon.

Voici notre nouvelle fonction :

function wpln_derniers-articles($atts, $content = null) {
   extract(shortcode_atts(array(
      'articles' => 1,
   ), $atts));

   $return_string = '<h3>'.$content.'</h3>';
   $return_string .= '<ul>';
   query_posts(array('orderby' => 'date', 'order' => 'DESC' , 'showposts' => $posts));
   if (have_posts()) :
      while (have_posts()) : the_post();
         $return_string .= '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
      endwhile;
   endif;
   $return_string .= '</ul>';

   wp_reset_query();
   return $return_string;
}

il n’y à plus qu’à appeler votre shortcode de cette façon :

[wpln_derniers-articles articles= »5″]Nos derniers articles[/wpln_derniers-articles]

Gregory

Agitateur de Stratégies, addict à WordPress depuis 2003, fada de Google depuis 1998. Incubateur Digital, j'accompagne au quotidien plusieurs entreprises et indépendants dans la gestion de leur stratégie digitale et l'optimisation de leurs sites WordPress. Basé à Aix-en-Provence, je suis à l'écoute de votre projet si vous avez besoin d'un expert WordPress.

Vous aimerez aussi

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *