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]