Get notifications from edited articles in WordPress

wordpress logoWordPress is really powerful. It is powerful from the start, but its power also stems from the large offering of plugins it provides. However, I did not found one plugin that did what I wanted: receive notifications when one of your articles is modified by someone else. So I wrote my own, taking another one as a start.

It is very basic and may not be suited for everyone’s need, but anyway, you can download it.

This work is based on the draft notification plugin.

<?php
/*
Plugin Name: Post notifier
Plugin URI: https://www.x2b4.com/
Description: Sends an email to the post author when a post is modified.
Author: x2b4
Version: 1.0a
Author URI: https://www.x2b4.com/
*/

https://www.x2b4.com/based on http:https://www.x2b4.com/www.dagondesign.com/articles/draft-notification-plugin-for-wordpress/

function notification_process($id) {

 global $wpdb;

 $result = $wpdb->get_row("
 SELECT post_status, post_title, user_login, user_nicename, display_name, {$wpdb->users}.ID
 FROM {$wpdb->posts}, {$wpdb->users}
 WHERE {$wpdb->posts}.post_author = {$wpdb->users}.ID
 AND {$wpdb->posts}.ID = '$id'
 ");

 global $current_user;
 get_currentuserinfo();

 if (($result->ID != $current_user->ID))
 {
 $message = "";
 $message .= "A post has been edited on '" . get_bloginfo('name') . "'\n\n";
 $message .= "Title: " . $result->post_title . "\n\n";
 $message .= "Original author: " . $result->display_name . "\n\n";
 $message .= "Editor: " . $current_user->display_name . "\n\n";
 $message .= "Link: " . get_permalink($id) . "\n\n";

 $result2 = $wpdb->get_row("SELECT {$wpdb->posts}.ID FROM {$wpdb->posts} WHERE `post_type` = 'revision' AND `post_parent` ='".$id."' ORDER BY `ID` DESC");
 $message .= "Diff: ".get_bloginfo("wpurl")."/wp-admin/revision.php?action=diff&right=".$id."&left=".$result2->ID;

 $subject = "Post '" . $result->post_title . "' updated on '" . get_bloginfo('name') . "' by " . $current_user->display_name;

 $user_info = get_userdata($result->ID);
 $recipient = $user_info->user_email;
 $headers = 'From: WordPress<wordpress@x2b4.com>' . "\r\n";
 mail($recipient, $subject, $message, $headers);
 }

}

add_action('publish_post', 'notification_process');

?>

6 commentaires

  1. Salut,

    Super plugin très simple et efficace.
    J’aimerai le faire fonctionner sur un WP mulisite (MU ou network). Le plugin ne fonctionne que le WP principale et les sous sites.

    Merci

  2. @madgmartin

    J’aurais tendance à dire que c’est les préfixes de base de donnée qui sont incorrect.
    Essaye de changer:
    {$tp}users par {$wpdb->users}
    et
    {$tp}posts par {$wpdb->posts} dans le code (dans les requetes sql).

    J’espère que cela corrigera le problème.

  3. Merci 🙂

    Je viens de modifier le plugin et je l’ai activé au niveau du network. Cela fonctionne parfaitement.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *