[RESOLU] Fonction PhP Wordpress

Eléphanteau du PHP | 17 Messages

05 juin 2019, 11:15

Bonjour,

Etudiant en 1ère année de développement Informatique, je dois dans le cadre de mon stage, effectuer un site wordpress avec pour une fonction qui permet lors de la publication d'un article avec une certaine catégorie, d'envoyer un mail automatiquement.
J'ai réussi grâce à une fonction trouver sur le net à effectuer l'envoi de mail pour une publication d'article, mais lorsque je souhaite ajouter une condition pour la sélection d'une catégorie spécifique, ce là ne fonctionne pas, je n'arrive pas non plus à vérifier le contenu de mes variables, je ne sais plus quoi faire ..

Voici la fonction en question, ainsi que mon code ajouter :
function email_members($post_ID)  {

  $notifyTo = 'mon mail';//comma separated
  $optionName = "email_members_notifications";

  $var = get_option($optionName , null );



  $emailMembersNotifications= array();
  if($var != null){
    $emailMembersNotifications = explode(';',$var);
  }
	$post = get_post ($post_ID);
	$categorie = get_the_category($post);
	$categorie_ID = $categorie[0];
	$categorie->name;
	if($categorie_ID == "3" || $categorie_ID == "6"){
  if(!in_array($post_ID,$emailMembersNotifications)){
    add_filter('wp_mail_content_type','set_contenttype');

print_r ($categorie_ID);
echo "'.$categorie_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');

Mon code ajouté est le suivant :
$post = get_post ($post_ID);
	$categorie = get_the_category($post);
	$categorie_ID = $categorie[0];
	$categorie->name;
	if($categorie_ID == "3" || $categorie_ID == "6"){
	
	print_r ($categorie_ID);
echo "'.$categorie_ID'";
Mon article ce publie correctement, mais pas d'envoi de mail.
Si je retire mon code, le mail fonctionne mais sans sélection de catégorie.
PS : Je suis actuellement en local.
Merci de votre aide.
Cordialement,
Swick

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

05 juin 2019, 18:15

Bonjour,

Plutôt que print_r ou echo, je te recommande d'utiliser var_dump() pour t'aider à débuguer, ça permet d'afficher le contenu de tes variables en évitant l'interprétation du code HTML ou en visualisant la présence d'éventuels espaces (ce que echo va masquer par exemple)

Ensuite difficile de débuguer sans avoir de message d'erreur, vérifie dans les logs Apache/PHP si tu n'aurais pas un message d'erreur.

Tu as une ligne qui ne fait rien à priori donc je ne sais pas si tu attends quelque chose à ce niveau mais ça ne peut pas marcher :

Code : Tout sélectionner

$categorie->name;
Vérifie aussi à quel niveau tu refermes l’accolade de ton if()
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 17 Messages

06 juin 2019, 14:43

Bonjour,

J'ai pu débuf la chose avec un peu de chance, je n'ai pas vraiment, compris, j'ai changé de place ma condition, je l'ai descendu juste avant l'envoi de mail, et ça fonctionne.. et j'ai également enlevé des " " sur mes chiffres d'ID, que j'avais oublié de la chaine de character ..

 $categorie->name


Ce là me permettait au départ de changer l'objet en chaine de caracter pour vérifier avec le nom des catégories, mais finalement, je suis passé par l'ID.

Merci de ton aide.
Bonne journée ! :)
Cordialement,
Swick.