[tutoriel] Création d'un plugin WordPress : les hooks

La section qui traite du CMS WordPress, optimisation, référencement, tweak, etc.

Adsense

Adsense
 

[tutoriel] Création d'un plugin WordPress : les hooks

Message non lupar mnttech » Lun 26 Mar 2012 17:21

Suite au premier article, vous deviez avoir un fichier PHP contenant, en en-tête, les informations relatives à votre plugin. Aujourd’hui, nous allons voir une partie importante, peut être même la plus importante, du fonctionnement des plugins WordPress : les hooks. En effet, c’est grâce à eux que vous allez pouvoir restreindre le champs d’application d’une fonction PHP, que vous aurez créée, à un événement précis. Certaines parties de votre code n’auront, par exemple, besoin d’être exécutée que lors de l’installation du plugin (la création d’une table dans la base de données, …). Même si vous pouvez grâce à une condition vérifier que la table n’existe pas avant de la créer, un hook s’avérera toujours utile, puisqu’il vous permettra d’économiser de la ressource. Cela réduira donc le temps de chargement de vos pages.

Il existe deux types de hooks : les hooks d’action et les hooks de filtre. Il faudra faire bien attention lors du choix du hook puisque vos fonctions auront un résultat différent en fonction du type de hook que vous aurez utilisé. Les hooks de filtre vont être utile pour permettre au plugin de modifier des parties du blog déja existante (le titre des articles, le contenu, …). En revanche, les hooks d’actions vont permettre d’effectuer une tâche (la fonction que vous aurez programmé) à un moment précis (au démarrage du loop, juste avant la fin du loop, …). Pour utiliser un hook de filtre, vous devez écrire :

Code: Tout sélectionner
add_filter('nom_du_hook', 'nom_de_la_fonction');


Les hooks de filtre s’utilisent de la même manière, mais vous devez remplacer add_filter par add_action ou do_action. Si le hook que vous voulez utiliser, pour que la fonction soit appelée au bon moment, ne correspond pas au type (action ou filtre) que vous voulez, vous pouvez inclure un hook dans une fonction et y faire ensuite appel via un deuxième hook :

Code: Tout sélectionner
function exemple1 {
    if (condition) {
        add_filter('the_content','fonction_a_appliquer');
    }
}
add_action('loop_start', 'exemple1');


La condition n’est pas obligatoire, et le premier hook appelle fonction_a_appliquer que je n’ai pas détaillé ici, mais qui pourrait être n’importe quelle fonction. Vous pourrez trouver une liste exhaustive des différents hooks de WordPress à cette adresse. Les hooks sont classé par ordre alphabétique. Pour chacun le type est précisé (action ou filtre), une case vous informe de la version de WordPress qui l’a vu apparaitre. D’autres informations utiles sont présentes (vous pouvez s’avoir si un hook a changer de nom, s’il n’est plus recommandé de l’utiliser : DEPRECATED, …).

Si, pour une raison ou une autre, vous souhaitez qu’une fonction soit executé au démarrage du loop, par exemple, sauf dans un cas précis vous pouvez utiliserla synthaxe suivante :

Code: Tout sélectionner
remove_filter('nom_du_hook', 'nom_de_la_fonction');


Il faudra, bien sûr, remplacer remove_filter par remove_action si la fonction que l’on ne souhaite pas exécuter était introduite par un hook d’action.

Pour les fonctions d’initialisation du plugin (comme celles à exécuter lors de sa désactivation) on utilise des fonction PHP qui sont légèrement différentes des hooks. En effet, elles se comportent quasiment de la même façon, mais on ne débute pas la ligne de code par add_afilter ou add_action. En revanche, vous allez spécifier ce que vous souhaitez faire : initialisation d’un plugin, … Dans la parenthèse, vous devez spécifier quel fichier doit être exécuter lorsque WordPress va initialiser le plugin, puis le nom des fonctions à l’intérieur de ce fichier.

Code: Tout sélectionner
register_activation_hook( __FILE__, array('WP_FaceThumb', 'plugin_install'));


Ne vous inquiétez pas de voir un array ici, c’est juste que, dans mon code, j’ai créé une classe WP_FaceThumb, et je fais appel à la fonction plugin_install qu’elle contient.
N'hésitez pas à faire appel à nous pour de la maintenance informatique
Avatar de l’utilisateur
mnttech
Administrateur du site
 
Messages: 290
Inscription: Lun 10 Aoû 2009 15:45

Retourner vers WordPress

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité