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)

Ce contenu a été publié le Astuces, Wordpress par Bruce. Mettez-le en favori avec son permalien.

A propos Bruce

Ingénieur informatique passionné par le développement, les nouvelles technologies et depuis quelques années par la blockchain et les crypto-monnaies. Je souhaite faire de la communauté Crypto-Lyon un espace ou tout le monde peut apprendre, s’informer et s’entraider et plus globalement faire rayonner la ville de Lyon dans le monde des cryptos !

5 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

  2. Bonjour,

    Je pose peut être une question bête mais je ne trouve pas comment placer la fonction pour recevoir un mail à chaque article publié. Je n’arrive pas à trouver ou intégrer le fichier Php

    • Bonjour, le bout de code de cet article est à placer dans le fichier functions.php de votre thème WordPress. Par exemple à la toute fin de ce fichier.

Répondre à admin Annuler la réponse.

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