Bien comprendre et utiliser les hooks WordPress

Publié par Gui dans Tips, Wordpress

Les hooks (ou crochet, hameçon en français) est un mécanisme permettant d’effectuer une action supplémentaire à un instant donné prévu par le système.

Il existe deux types de hook dans WordPress :

Les actions

Tout au long du processus de construction d’une page, WordPress place des « hooks » permettant aux développeurs d’ajouter des fonctionnalités à une étape particulière. Ainsi il est facile d’enrichir le processus avec nos propres fonctions.

Exemple simple, l’action « save_post » permet de réaliser des actions supplémentaires lors de la sauvegarde d’un post (article, page ou autre). C’est par cet intermédiaire que l’on pourra sauvegarder nos méta informations (metaboxes).

Voici certaines des actions importantes :

Voyons comment facilement utiliser un hook pour ajouter le code Google Analytics dans le footer de votre thème.

Exemple avec wp_footer

Dans un fichier comme functions.php par exemple, ajoutez :

add_action('wp_footer', 'add_google_analytics');

Puis créez la fonction add_google_analytics :

function add_google_analytics()
{
	$ga = get_option('google_analytics');
	if(!empty($ga))
		echo stripslashes($ga);
}

Nous aurions très bien pu ajouter ce code directement dans le fichier footer.php. Mais ici, le code est sorti du template, ce qui est plus lisible, maintenable et réutilisable.

Les filtres

Le principe des filtres est de modifier une donnée construite par WordPress avant de l’afficher.

Voici certains filtres utiles :

Le filtre the_content va permettre de modifier le contenu d’un post avant de l’afficher. Très utile si vous avez des remplacements de chaînes à faire.

Voyons par exemple comment modifier le […] présent par défaut à la fin des extraits d’articles.

Exemple avec get_the_excerpt

add_filter('get_the_excerpt', 'new_excerpt_hellip');

La différence avec les actions, c’est le ou les paramètres passés à notre fonction qui vont nous permettre de modifier leur valeur avant de les afficher.

function new_excerpt_hellip($text)
{
   return str_replace('[...]', '...', $text);
}

Conclusion

Les hooks sont un très moyen de modifier le comportement de WordPress selon nos besoins afin soit d’y ajouter de nouvelles fonctionnalités au travers des actions ou simplement d’altérer certaines de ses méthodes via les filtres.

Il est donc vivement recommandé de les utiliser plutôt que d’intervenir directement dans les templates de fichier.

19 commentaires

1 2
  1. Hervé (Pages Web Pro)

    Bonjour,
    Je débute en hooks :-)
    JE voudrai dans un multisite supprimer tous les mentions du créateur de thème ET.
    je pense qu’il faut faire un filtre, mais je n’arrive pas à voir lequel pourrait être utilisé ? et la liste d’ailleurs ?
    Bonne journée

  2. Eric

    Une autre alternative : le thème enfant?!

  3. Yatk

    Merci, article bref et explicatif.

  4. L. Delmas

    Bonjour et merci pour cet article.

    Je cherche un moyen de customiser un plugin que j’ai installé mais je ne veux pas toucher directement le code de la personne qui a créé ce plugin (y a un minimum de respect à avoir pour son travail).

    Je voudrais savoir s’il est possible que je fasse un plugin dont la seule fonction soit « hookée » sur une des fonctions du plugin déjà installé. Si oui, comment?

  5. Nicolas

    Bonjour M Voisin,

    Je suis tombé sur votre article fort intéressant sur les hooks.
    J’ai moi-même un souci avec eux…

    J’ai la dernière version de WP ainsi que Contact form 7

    J’ai mis un formulaire d’inscription avec CF car j’utilise un plugin d’affiliation.

    Avant la mise à jour de WP, tout allait bien et maintenant l’action de CF7 ne se fait plus. La personne s’inscrit, l’inscription est enregistrée MAIS il n’y a ni message de confirmation qui apparait…

    Avez-vous déjà rencontré ce genre de souci ?
    J’ai tut essayé et je suis perdu. Je suis loin d’être un pro. Je bidouille comme on dit.

    Merci de votre aide.
    Voici le site en question : http://affinites-rencontres.com/

    cordialement
    nicolas

  6. سئو و بهینه سازی

    Merci, article bref et explicatif .!

  7. نورپردازی ساختمان

    Avant la mise à jour de WP, tout allait bien et maintenant l’action de CF7 ne se fait plus. La personne s’inscrit, l’inscription est enregistrée MAIS il n’y a ni message de confirmation qui apparait…

  8. bricfa

    bonjour,
    j’utilise le thème enfant de strofront avec woocommerce.
    j’essaie de passer des hooks wp et woocommerce mais rien ne se passe.
    avez vous une idée de pourquoi cela ne fonctionne.
    merci d’avance

  9. bricfa

    re,
    j’ai oublié de préciser que j’écris les hooks dans le fichier functions.php du thème enfant

  10. قالب وردپرس

    j’ai oublié de préciser que j’écris les hooks dans le fichier functions.php du thème enfant

  11. سایت پاپ آپ

    j’ai oublié de préciser que j’écris les hooks dans le fichier functions.php du thème enfant

  12. دانلود اسکریپت

    دانلود اسکریپت
    http://www.xi-tools.com/
    افزونه وردپرس

  13. Kaba CONDE

    Bonjour, je voudrais ajouter une banniere de 15px de haut à mon site sur wordpress. Je suppose qu’on peut le faire avec les filtres ou les hooks.?

  14. Goms

    Merci pour ce tuto.

    http://upt2.me

  15. geve2009

    Bonjour,
    Je suis VRAIMENT débutant.
    Dans ce tuto, je comprends bien comment on crée un filtre, où on place son code (fichier functions.php du thème enfant), mais pas où on déclenche/utilise le filtre créé.
    C’est sans doute évident ???

  16. swisstomato.ch

    Merci pour le partage

  17. imaguss.cloud

    Essa é uma receita fácil e também prática de fazer a ganache, porém não é a forma
    profissional. http://www.imaguss.cloud/profile.php?id=103304

  18. Pezeshkchi

    I’m always monitor your website Thank you

Laisser une réponse


Post shadow