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]