Les hooks et les shortcodes font appel à des notions à la fois semblables et très différentes.
Ils peuvent tous les deux être fournis par le noyau WordPress, par un thème ou par une extension. Il est également possible d'en créer de nouveaux.
Dans cette fiche, je vais vous aider à démystifier les fonctions de création et d'utilisation des hooks et des shortcodes.
Création | Utilisation | |
---|---|---|
Hook de type filtre |
Exécute les fonctions de rappel qui ont été associées au hook avec add_filter(). |
Associe une fonction de rappel à un hook de type filtre. |
Hook de type action |
Exécute les fonctions de rappel qui ont été associées au hook avec add_action(). |
Associe une fonction de rappel à un hook de type action. |
Shortcode |
Associe une fonction de rappel qui sera exécutée lorsque le shortcode sera dans une page ou un article ou lors de l'appel à do_shortcode(). |
[monprefixemonshortcode] ou Affiche la valeur de retour de la fonction de rappel associée au shortcode. |
Il existe de nombreux hooks fournis par le noyau WordPress. La liste est trop longue pour être reprise ici.
On peut toutefois en mentionner quelques-uns :
Lorsque vous développez un thème parent ou une extension, il est possible d'ajouter de nouveaux hooks personnalisés à l'aide de apply_filters() ou do_action().
Pourquoi ne pas créer de nouveaux hooks dans un thème enfant ? Simplement parce que le but des hooks est de permettre à ceux qui utilisent notre code de le personnaliser. Le thème enfant est déjà une personnalisation alors la définition d'un hook serait inutile.
/**
* Fonction de rappel du hook after_setup_theme, exécutée après que le thème ait été initialisé.
* @author Christiane Lagacé <christiane.lagace@hotmail.com>
*
* Utilisation : add_action( 'after_setup_theme', 'monprefixe_apres_initialisation_theme' );
*/
function monprefixe_apres_initialisation_theme() {
// par défaut, il y a 2 colonnes mais les thèmes enfant peuvent en définir un nombre différent
$colonnes = apply_filters( 'ajuster_nombre_colonnes', 2 );
}
add_action( 'after_setup_theme', 'monprefixe_apres_initialisation_theme' );
Pour exécuter un hook, que ce soit un hook fourni par le noyau WordPress ou un que vous avez ajouté dans un thème ou dans une extension, il faut utiliser add_filter() pour les hooks créés par apply_filter() ou add_action() pour ceux créés par do_action().Dans le thème enfant (WordPress)
/**
* Fonction de rappel du hook ajuster_nombre_colonnes défini dans le thème parent.
* @author Christiane Lagacé <christiane.lagace@hotmail.com>
*
* Utilisation : add_filter( 'ajuster_nombre_colonones', 'monprefixe_ajuster_nombre_colonnes' );
*/
function monprefixe_ajuster_nombre_colonnes() {
return 4;
}
add_filter( 'ajuster_nombre_colonnes', 'monprefixe_ajuster_nombre_colonnes' );
Dans cet exemple, le thème enfant aura 4 colonnes. C'est le thème parent qui générera le code HTML correspondant au nombre de colonnes, selon la valeur retournée par le hook.
Dans le cas où le thème enfant n'exécuterait pas ce hook, le nombre de colonne serait tel que défini par le thème parent, soit 2.
Tout comme pour les hooks, le noyau WordPress, les thèmes et les extensions définissent de nombreux shortcodes.
Parmi les shortcodes définis par le noyau WordPress, notons :
Les thèmes et les extensions peuvent créer de nouveaux shortcodes à l'aide de add_shortcode().
/**
* Définit un shortcode qui affiche la liste des kayaks tirée de la base de données.
* @author Christiane Lagacé <christiane.lagace@hotmail.com>
*
* Utilisation : [monprefixelistekayaks]
* Suppositions critiques : le style .textespecial doit définir l'apparence du texte
*
* @return String Code HTML généré par le shortcode
*
*/
function monprefixe_liste_kayaks() {
$code_html = ...;
// ...
return $code_html;
}
add_shortcode( 'monprefixelistekayaks', 'monprefixe_liste_kayaks' );
Pour exécuter un shortcode dans une page ou dans un article, il suffit d'inscrire le nom du shortcode (premier paramètre de add_shortcode) entre crochets carrés dans le texte d'une page ou d'un article.
Il est également possible d'exécuter le shortcode par programmation à l'aide de do_shortcode() dans un fichier modèle.
do_shortcode('monprefixelistekayaks);]
▼Publicité