0
votes

Créer un travail cron après chaque publication

J'ai une situation où je veux créer un emploi cron après chaque publication de Blog WordPress. Cron Job sera exécuté après 7 jours de publication et vérifiez si tous les utilisateurs ont visionné les messages et courri de la liste de la liste de messages non consultés par la liste des utilisateurs. Comment puis-je atteindre cet objectif. Son site Web de WordPress et il y a environ 300 utilisateurs, après chaque utilisateur de publication de publication de blog, obtient une notification. Alors voulez vérifier qui a consulté et qui n'a pas vu le message.


0 commentaires

3 Réponses :


0
votes

Si vous souhaitez démarrer le travail cron uniquement la première fois qu'un article est publié, vous souhaitez utiliser le brouillon_to_publish .

Drajuste_To_Publish


0 commentaires

0
votes

Eh bien, il existe des plugins capables de gérer des statistiques et de suivre les activités des utilisateurs. Je ne suis pas sûr de savoir lequel convient à vos besoins, mais je vais essayer de donner une approche simple pour le faire vous-même.

Suivi fort> Nous pouvons définir un champ personnalisé pour celles (postes / post-types) où nous stockons une liste d'utilisateurs qui lisent ce post. Appelons-le lecteurslist em> p>

sur le fichier unique.php, nous ajouterons ces lignes à mettre à jour ce champ. P>

<?php 
function wpdocs_run_on_publish_only( $new_status, $old_status, $post ) {
 {
     if ($new_status != 'publish') {
         return;
     }
     //You better add limitations to choose specific post_types you are targeting

  $postid=$post->ID;
     add_cron($postid);
 }

add_action( 'transition_post_status', 'wpdocs_run_on_publish_only', 10, 3 ); 

function add_cron($postid){
     $nxtweek = strtotime("+1 week");
     add_action('sendemail', 'stats_mail', 10, 1);     
     wp_schedule_single_event(time() + $nxtweek, 'sendemail',array( $postid);
}

function stats_mail($postid)
{

$readerslist = get_post_meta( $postid, 'readerslist', true );
$users = get_users( array( 'fields' => array( 'ID' ) ) );
$absents = array_diff($users, explode(",",$readerslist));

//Now that you got the list of absent users
$names='';
foreach ($absents as $x){
$names.=$x.' : '.get_user_meta( $x,'first_name' , true ).' '.get_user_meta( $x,'last_name' , true ).'<br>'; 
}

$title=get_the_title($postid);

$to = 'you@example.com';
$subject = 'Users who didn\'t read '.$title;
$headers = array('Content-Type: text/html; charset=UTF-8');

wp_mail( $to, $subject, $names, $headers );

}
 ?>


1 commentaires

Merci Bilel, je vais essayer de voir.



0
votes

J'ai essayé votre code, cela fonctionne bien, mais je ne suis pas capable de le faire fonctionner comme je le voulais, pouvez-vous y regarder. Je ne sais pas ce que je fais mal. XXX


0 commentaires