WordPress: envoyer un e-mail à chaque nouvel article publié

Voici une fonction permettant d’envoyer un e-mail à chaque nouvel article publié:

function set_contenttype($content_type){
  return 'text/html';
}

function email_members($post_ID)  {

  $notifyTo = 'mail@example.org';//comma separated
  $optionName = "email_members_notifications";

  $var = get_option($optionName , null );

  $emailMembersNotifications= array();
  if($var != null){
    $emailMembersNotifications = explode(';',$var);
  }

  if(!in_array($post_ID,$emailMembersNotifications)){
    add_filter('wp_mail_content_type','set_contenttype');
    $post = get_post($post_ID);




    $message = '<html lang="fr">
                <head>
                    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">

                </head>
                <body>
                Bonjour,<br/>
                Un nouvel article a été publié sur le site <a href="'.get_bloginfo('url').'">'.get_bloginfo('url').'</a>.<br/>
                Pour le consulter, merci de cliquer sur le lien suivant:<br/>
                <a href="'.$post->guid.'">'.get_the_title($post_ID).'</a>
            </body>
        </html>';

    if(wp_mail(
        $notifyTo,
        '[MON-BLOG] Nouvel article: '.html_entity_decode(get_the_title($post_ID), ENT_COMPAT, 'UTF-8'),
        $message)){
      $emailMembersNotifications[] = $post_ID;
    }


    if(!empty($emailMembersNotifications)){
      if(!get_option($optionName)){
        add_option( $optionName, implode(';',$emailMembersNotifications) );
      } else {
        update_option( $optionName, implode(';',$emailMembersNotifications) );
      }
    }
  }
  return $post_ID;
}

add_action('publish_post', 'email_members');

Cette fonction est à placer dans le fichier functions.php de votre thème (wp-content/themes/[VOTRE-THEME]/functions.php)

3 réflexions au sujet de « WordPress: envoyer un e-mail à chaque nouvel article publié »

  1. Bonjour, merci pour cette fonction qui pourait m’être très utile. Je voulais tout de même savoir si il était possible d’envoyer par email le titre et le contenu de chaque nouvel article ? De plus est-il possible de définir une catégorie spécifique d’article à envoyer ?

    Paul

    • Bonjour, voici une modification de la fonction email_on_post qui permet de choisir les articles qui appartiennent à certaines catégories:

      function email_on_post($post_ID)  {
       
          $notifyTo = 'mail@example.org';//comma separated
       
          $optionName = "email_on_post";
          $emailOnPostNotifications = explode(';',get_option($optionName , null ));
      
          if(!in_array($post_ID,$emailOnPostNotifications)){
              add_filter('wp_mail_content_type',create_function('', 'return "text/html";'));
              $post = get_post($post_ID);
              
              $catToInclude = array(4,3);//id des catégories à inclure
       		foreach(wp_get_post_categories($post_ID) as $catId){
       			if(in_array($catId,$catToInclude)){
      	 			
      	        	wp_mail(
      	            $notifyTo,
      	            '[MON-BLOG] Nouvel article: '.html_entity_decode(get_the_title($post_ID), ENT_COMPAT, 'UTF-8'),
      	            '
      	                
      	                    
      	                
      	                
      	                Bonjour,
      Un nouvel article a été publié sur le site '.get_bloginfo('url').'.
      Pour le consulter, merci de cliquer sur le lien suivant:
      guid.'">'.get_the_title($post_ID).' '); $emailOnPostNotifications[] = $post_ID; if(count($emailOnPostNotifications) < 1){ update_option( $optionName, implode(';',$emailOnPostNotifications) ); } else { add_option( $optionName, implode(';',$emailOnPostNotifications) ); } break; } } } return $post_ID; }

      Pour récupérer le titre et le contenu de l'article utilisez respectivement la fonction get_the_title($post_ID) et $post->post_content

Répondre à admin Annuler la réponse.

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