09/10/2017 / Samuel

Ce article explique comment créer un plugin qui alerte par mail chaque fois qu’un article est supprimé par un utilisateur. Le plugin utilise les Action Hooks, une fonctionalité de WordPress.
 

Intro aux Action Hooks

Pour faire simple, un action hook ou juste hook (littéralement crochet d’action ou crochet) est une instruction qui enclenche une fonction lorsqu’une tâche spécifique de WordPress est exécutée. Par exemple le code ci-dessous lance la fonction send_urgent_email() quand un plugin vient d’être activé. activated_plugin la tâche spécifique de WordPress qui exécutée quand un plugin de WordPress est activé. Vous pouvez comparer les action hooks aux event listeners dans Javascript (ex: onClick()).

// La fonction à "accrocher"
function send_urgent_email() {
	// Instructions php pour l'envoi du mail
}

// Configuration du hook
add_action( 'activated_plugin', 'send_urgent_email');

 

Créer le plugin

Pour créer le squelette du plugin, ajoutez un nouveau dossier dans le repertoire /wp-content/plugins et créez un file php à l’intérieur. Il est recommandé de nommer le ficher en fonction du nom du plugin, en miniscule et sans caractères spéciaux. Dans notre cas, le plugin est Trash Monitor, le dossier sera donc trash-monitor et le fichier php trash-monitor.php  comme l’explique l’image ci-dessous.

Overview of the plugin folder structure
Aperçu de la structure du dossier du plugin

Ensuite, collez dans le fichier le bloc de commentaire ci-dessous. En gros, ce commentaire sera la “carte d’identité” du plugin et indiquera à WordPress l’identité de notre nouveau plugin.

<?php
/**
 * Plugin Name: Trash Monitor
 * Plugin URI: https://github.com/samuelguebo
 * Description: This plugin sends an e-mail whenever a post is deleted.
 * Version: 0.0.1
 * Author: Samuel Guebo
 * Author URI: https://github.com/samuelguebo
 * License: GPL3
 * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
 */
 ?>

Si vous avez correctement suivi les étapes plus haut, votre plugin devrait apparaitre dans la liste des plugins WordPress de votre site. Activez le.

Plugin using Action hook
Le plugin Trash Monitor est présent dans la liste des plugins

A présent, le hook

Comme annoncé dès l’entame, le but est d’envoyer un mail chaque fois que quelqu’un supprime un article ou le déplace vers la corbeille. Commençons par ajouter le squelette ci-dessous à notre plugin.

// La fonction à "accrocher"
function send_urgent_email() {
	// Instructions to send the e-mail
}

// Configuration du hook
add_action( 'activated_plugin', 'send_urgent_email', 10, 3);

 

Nous avons réutilisé le code de l’introduction mais juste remplacé l’action activated_plugin par transition_post_status. transition_post_status est la tâche en exécutée quand un article WordPress change de statut, par exemple quand un article passe du statut de publié à supprimé.

L’action transition_post_status nécessite 3 paramètres:

  • $new_status, le nouveau statut de l’article WordPress
  • $old_status, l’ancien statut de l’article avant qui soit effacé
  • $post, l’object PHP de l’article

Et add_action() prend les paramètres suivants:

add_action( string $tag, 
	callable $function_to_add, 
	int $priority , 
	int $accepted_args
)

A présent ajoutons les instructions PHP restantes et finalisons le code du plugin.

<?php 
/**
 * Plugin Name: Trash Monitor
 * Plugin URI: https://github.com/samuelguebo
 * Description: This plugin sends an e-mail whenever a post is deleted.
 * Version: 0.0.1
 * Author: Samuel Guebo
 * Author URI: https://github.com/samuelguebo
 * License: GPL3
 * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
 */

 function send_urgent_email( $new_status, $old_status, $post ) {
	// Si l'article est passé du statut de publis à trash
    if ( $old_status == 'publish'  &&  $new_status == 'trash' ) {
        
		// Les paramètres de mail à envoyer
		$object   = $post->post_title . " was deleted!";
		$to  = get_bloginfo('admin_email');
		$headers[] = "From: " .get_bloginfo('title'). " <$to>";
		
		// On compose le message par concatenation
		$message  = "";
		$message .= "The post " . $post->post_title;
		$message .= " was deleted!";
		
		// Et on envoie mail
		wp_mail( $to, $object, $message, $headers );

	} // End if
}

// Configuration du hook
add_action( 'transition_post_status', 'send_urgent_email', 10, 3 );
?>

 

Conclusion

Nous avons survolé comment créer un plugin minimaliste et avons exploré en détail le concept d’Action Hooks. A présent, vous devriez avoir un compréhension plus claire des Action Hooks dans WordPress et de leur usage. Il reste beaucoup à voir, en particulier si vous souhaitez développer un plugin avec des fonctionalités avancées. Pour allez plus loin, je recommande cette introduction au développement de plugin par WPMU et l’excellente série de tutoriels sur la Programmation Orientée-Objet avec WordPress par Tom McFarlin.
 
Photo credit: webhouseit.com

Facebook Comments