Je gère un blog multi-sites avec environ 300 sites.
J'ai une idée que je veux écrire un plugin afin d'ajouter tous les administrateurs de blogs à une liste de diffusion MailMan. Je veux juste des administrateurs cependant, je ne veux pas ajouter d'éditeurs et d'abonnés à cette liste de courrier électronique.
Je veux capturer le cas où un administrateur de blog a été affecté. J'enverrai ensuite un courrier électronique à l'adresse électronique d'abonnement de ma liste de diffusion pour ajouter automatiquement la personne.
Alors je me demandais quel crochet devrais-je utiliser? Je pense que je veux envoyer un email chaque fois qu'une personne est définie en tant qu'administrateur. Peu m'importe s'ils sont supprimés en tant qu'administrateur.
Vous seriez accroché à profile_update
et user_register
. Commencez par vérifier s'il s'agit d'un nouvel utilisateur et s'il s'agit d'un administrateur/éditeur.
Puis envoyez le mail. Même récit avec la mise à jour de l'utilisateur: voir si le rôle a changé et si le nouveau rôle est admin ou editor.
<?php
add_action( 'profile_update', 'wpse33949_profile_update' );
add_action( 'user_register', 'wpse33949_profile_update' );
function wpse33949_profile_update( $user_id, $old_user_data = false )
{
// get the updated user data
$userdata = get_userdata( $user_id );
// whatever you need to send here
$message = "Sign up for my email!";
$subject = "Mailing List";
if( ! $old_user_data && in_array( $userdata->user_role, array( 'editor', 'administrator' ) ) )
{
// we're inserting a new user...
wp_mail( $userdata->user_email, $subject, $message );
}
elseif( in_array( $userdata->user_role, array( 'editor', 'administrator' ) ) && $userdata->user_role != $old_user_data->user_role )
{
// We're updating the role of an existing user, make sure they're
// becoming an admin or editor, then send the message.
wp_mail( $userdata->user_email, $subject, $message );
}
}
Ce qui précède n'a pas été testé. Copiez et collez avec prudence. Je voulais juste vous lancer.