pre_option_ : Le hook de la semaine n°8

pre_option_ : Le hook de la semaine n°8

Few Options

pre_option_ est un de mes hooks favoris, il permet tant de choses que je vais devoir me restreindre à vous faire un article court ! Grà¢ce à lui vous pourrez parfois intervenir sur un plugin qui ne propose pas de hook, en tout cas c’est souvent comme ça que je l’utilise. De toutes façons mes hooks favoris commencent par pre_.

The Zero Option

Le début du code de ce hook dans le core est le suivant :

Ceci est le début de la fonction get_option() du core. Elle vérifie d’abord que vous avez bien demandé une option sinon elle renvoie false. Puis juste après, c’est déjà à nous de jouer ! Le nom complet du hook pourrait être "pre_option_" . $option ce qui signifie qu’il faut savoir quelle option on désire hooker finalement. Allez, un exemple tout de suite :

[Un client] Bonjour, le paramétrage du « Email admin » sur mon site est important car nous recevons beaucoup de mail d’alertes, que ce soit pour les commentaires ou des alertes sécurité, les mails sont traités très rapidement. Cependant une seule boite mail pour tout le monde ça ne me va pas, j’ai 4 modérateurs sur la journée, chacun faisant 6h de travail.
J’aurais aimé que selon l’heure de la journée l’adresse mail soit différente automatiquement, pour le moment quand un admin se connecte il doit aller modifier ce champs, il y a donc risque d’oubli ou de faute de frappe. Vous avez une solution pour moi ?

Failure Is Not an Option

OUI ! pre_option_ !! Et plus précisément pre_option_admin_email puisque l’option recherchée est admin_email. Voici comment l’utiliser :

On voit donc qu’avec un simple filtre je peux modifier l’adresse mail de l’admin selon l’heure.
Cet exemple est très simpliste, peut-être trop ? Je vais aller un peu plus loin. En fait, les plugins et thèmes ajoutent eux aussi des options, et c’est là qu’on peut intervenir de façon magique. Normalement, si un plugin nous propose une option, une fois choisie, elle est en base de donnée et basta, il s’en sert somme ça. Mais grà¢ce à ce filtre, nous avons la possibilité de modifier l’option à la lecture ! La valeur en base NE CHANGE PAS ! Et ça c’est top.

Il est donc tout à fait possible d’utiliser ce hook sur les options des plugins et ainsi forcer des valeurs par défaut, ou les modifier selon telle ou telle valeur.

Prenons un cas que j’ai déjà rencontré :

Un client avait des articles qui allait intéresser ses followers Twitter et d’autres articles les followers Facebook. Il voulais donc simplement mettre en avant le bouton de partage favoris selon la catégorie de l’article. Je ne me souviens plus du plugin, mais ce n’est pas bien grave, imaginons que l’option était « plugin_social », cette option est un tableau contenant les slugs des réseaux sociaux. Voici ce qu’il a et ce que j’en ai fait :

Avant, il a donc un tableau avec 3 réseaux, dans l’ordre « twitter, g+, FB », il souhaite donc que si l’article se trouve dans la catégorie « Facebooker », alors Facebook doit se trouver en premier et Twitter en dernier. Voici le code simple :

C’est tout ! Je vérifie juste qu’on a bien un article en cours ($post dans une loop) et qu’il fait partie de la catégorie recherchée, dans ce cas, je recrée le tableau, nous avons maintenant pour le même code :

Facile non ? Plus d’infos : http://codex.wordpress.org/Plugin_API/Filter_Reference/pre_option_(option_name)

Maintenant, libre cours à votre imagination ou votre besoin !

Vous aimez ? Partagez !


Réagir à cet article

220 caractères maximum