- WordPress :4.9.4
- Statut : résolu
- Ce sujet contient 13 réponses, 2 participants et a été mis à jour pour la dernière fois par Timama, le il y a 6 années et 6 mois.
-
AuteurMessages
-
9 mai 2018 à 14 h 03 min #2149418
Bonjour,
Ma configuration WP actuelle WordPress 4.9.5
- Version de PHP/MySQL :
- Thème utilisé : enfold
- Extensions en place :
- Nom de l’hébergeur : Strato
- Adresse du site :
Problème(s) rencontré(s) :
Bonjour,
Je souhaite avoir un bouton. Quand on clique sur ce bouton, un Email est envoyé à la personne qui a cliqué (c’est donc une personne déjà logguée et connue).
J’utilise un shortcode pour faire cela.
Mais j’ai du mal avec l’écriture du code.
function boutoncode($atts, $content = null) {
extract(shortcode_atts(array(
'lien' => '#',
'couleur' =>'bleu'
), $atts));
$codecode = '
<input class="bouton '.$couleur.'" type="submit" name="envoyer" value="Cliquez ICI pour recevoir par Email le CODE PROMO" />
<?php echo $_POST["envoyer"];
if ( isset( $_POST["envoyer"] ) ) {
echo "TEST";
} ?>
';
return $codecode;
}
add_shortcode('boutoncode', 'boutoncode');En fait, c’est avec ce qu’il y a dans $codecode que j’ai des problèmes.
Par exemple, le <?php est traduit en <!–?php et du coup cela ne fonctionne pas.Je n’arrive pas à mettre la condition dans le shortcode.
J’ai trouvé plein d’exemple mais ce sont des exemples comme:
si valeur=oui
$retour=super
sinon
$retour=non
fin-si
return $retourOr, moi j’ai ma condition qui est directement dans $retour (pour l’exemple ci dessus) ou plutôt dans $codecode dans l’exemple du début.
et du coup, je n’arrive pas à intégrer cette condition dans la valeur à retourner.
êtes vous déjà tombé sur ce cas de figure?
Merci beaucoup pour votre aide
Timama
9 mai 2018 à 14 h 35 min #2149436j’ai fait une autre tentative comme ça
/* Shortcode bouton */
function boutoncode($atts, $content = null) {
extract(shortcode_atts(array(
'lien' => '#',
'couleur' =>'bleu'
), $atts));
$codecode = ' <input class="bouton '.$couleur.'" type="submit" name="envoyer" value="Cliquez ICI pour recevoir par Email le CODE PROMO" />';
$postcode = $_POST["envoyer"];
if ( isset( $_POST["envoyer"] ) ) {
$codemail ='envoi du mail';
}
return $codecode . $postcode . $codemail;
}
add_shortcode('boutoncode', 'boutoncode');j’ai séparé du coup je n’ai plus l’erreur avec <?php.
Mais quand je clique sur le bouton, je n’ai rien en valeur pour $_POST[« envoyer »]
et je ne sais pas si je peux écrire
<div>
<div>return $codecode . $postcode . $codemail;</div>
<div>car cela va tout executer même l’envoi du mail sans condition…</div>
</div>
<div>bon je continue…..</div>
<div></div>
<div>merci beaucoup si vous avez une idée sur ce problème</div>9 mai 2018 à 18 h 25 min #2149484si je fais quelquechose comme cela, je n’ai plus de bouton et le if ne fonctionne pas…. car je n’arrive pas à bien l’écrire depuis le début….
cela renvoie le code texto
function boutoncode($atts, $content = null) {
extract(shortcode_atts(array(
'lien' => '#',
'couleur' =>'bleu'
), $atts));
$codecode = ' <input class="bouton '.$couleur.'" type="submit" name="envoyer" value="Cliquez ICI pour recevoir par Email le CODE PROMO" />';
$postcode = $_POST['envoyer'];
$emailcode ='
if ( isset($postcode) ) {
echo "TEST";
// include("send-email-contact.php");
}';
return $emailcode;
}
add_shortcode('boutoncode', 'boutoncode');je continue….. toujours pas trouvé
9 mai 2018 à 21 h 15 min #2149517Bonjour,
Avant de faire du PHP, il faut faire du html correct.
Tu utilises des input, mais en dehors de balises
<form>
et sans préciser les méthodes d’envois des données, ca ne peux donc pas fonctionner https://openclassrooms.com/courses/apprenez-a-creer-votre-site-web-avec-html5-et-css3/les-formulaires-8Ceci n’est qu’un lien parmi d’autres mais vous devez chercher comment créer des formulaires html puis vous les traiterez en PHP, puis vous saurez les transformer en shortcode WP
10 mai 2018 à 11 h 14 min #2149701Bonjour,
oui c’est tout à fait vrai.. désolée car j’avais commencé avec quelquechose comme
<a class="bouton '.$couleur.'" href="'.$lien.'" target="_blank">' . do_shortcode($content) . '</a>';
mais comme je ne voulais pas un lien mais une action, j’ai mis un input… c’est sur que sans method=post dans form ça marche pas..
Bonne remarque….. une fois encore j’ai essayé de trouver une solution mais je me suis embrouillée….Merci sebastienserre….. je modifie ça (il me semble être passée par ça quand même à un moment de ma réflexion 😉 )
10 mai 2018 à 11 h 30 min #2149707J’ai donc inclu le Input dans <form>.
/* Shortcode bouton */
function boutoncode($atts, $content = null) {
extract(shortcode_atts(array(
'lien' => '#',
'couleur' =>'bleu'
), $atts));
$codecode = '
<form method="post" >
<input class="bouton '.$couleur.'" type="submit" name="envoyer" value="Cliquez ICI pour recevoir par Email le CODE PROMO" />
</form>';
$postcode = $_POST['envoyer'];
$emailcode ='
if ( isset($postcode) ) {
echo "TEST";
// include("send-email-contact.php");
}';
return $codecode . $postcode . $emailcode;
}
add_shortcode('boutoncode', 'boutoncode');Effectivement, j’ai un POST maintenant.
Mais j’ai toujours mon problème de base, c’est à dire « je souhaite cliquer sur le bouton et alors ça envoi un Email ».
Dans le cas au dessus, j’ai utilisé
<div>
<div>return $codecode . $postcode . $emailcode;</div>
</div>
<div></div>
<div>car en fait, je ne sais pas trop quoi mettre en return..</div>
<div>le $codecode m’affiche bien le bouton sur lequel je dois cliquer (du coup je pense qu’il faut le laisser)…</div>
<div>le $postcode m’affiche bien une valeur (maintenant que j’ai bien écrit mon formulaire)</div>
<div>mais le $emailcode m’affiche le code tel quel</div>
<div></div>
<div><code class= »language-html » data-lang= »html »> if ( isset($postcode) ) {
echo « TEST »;
// include(« send-email-contact.php »);
}</div>
<div></div>
<div>je ne vois pas comment activer ce bout de code…. tout en mettant le bouton déjà dans le return….</div>
<div>c’est toujours ça que je ne vois pas … comment faire</div>
<div></div>
<div>je continue à chercher…..</div>
<div></div>10 mai 2018 à 11 h 38 min #2149708j’ai essayé ce code
/* Shortcode bouton */
function boutoncode($atts, $content = null) {
extract(shortcode_atts(array(
'lien' => '#',
'couleur' =>'bleu'
), $atts));
$codecode = '
<form method="post" >
<input class="bouton '.$couleur.'" type="submit" name="envoyer" value="Cliquez ICI pour recevoir par Email le CODE PROMO" />
</form>';
$postcode = $_POST['envoyer'];
if ( isset($postcode) ) {
$emailcode =' TEST';
// include("send-email-contact.php");
}
return $codecode . $postcode . $emailcode;
}
add_shortcode('boutoncode', 'boutoncode');et quand je clique, j’ai la valuer de mon post qui s’afiche et aussi « TEST »..
du coup… je vais essayer d’envoyer un Email…. et je vais voir si cela fonctionne comme cela…..
je reviens dès que j’ai testé… (avec la solution j’espère )!!
14 mai 2018 à 11 h 16 min #2150998alors, j’ai toujours un problème. Je ne sais pas comment executer l’action « envoyer un Email’ à partir du shortcode.
j’ai le code :
function boutoncode($atts, $content = null) {
extract(shortcode_atts(array(
'lien' => '#',
'couleur' =>'bleu'
), $atts));
$codecode = '
<form method="post" >
<input class="bouton '.$couleur.'" type="submit" name="envoyer" value="Cliquez ICI pour recevoir par Email le CODE PROMO" />
</form>';
$postcode = $_POST['envoyer'];
if ( isset($postcode) ) {
//$emailcode = " wp_mail( 'myemail@gmail.com', 'test shortcode', do_shortcode($message), $headers, $attachments )";
$headers = 'From: Maplus';
$emailcode = mail('myemail@gmail.com', 'test shortcode', 'test', $headers);
// include("send-email-contact.php");
}
return $codecode . $emailcode;
}
add_shortcode('boutoncode', 'boutoncode');Ceci me renvoi 1 (pas true ou false mais 1) et je ne reçois aucun Email.
Et si je met $emailcode avec = ‘ ‘ comme
<div>
<div>$emailcode = ‘ mail(‘myemail@gmail.com’, ‘test shortcode’, ‘test’, $headers)’ ;</div>
</div>
<div>cela écrit le texte du code sur l’écran.</div>
<div></div>
<div>du coup, je ne sais pas comment écrire le code pour que le shortcode execute l’envoi de l’email……</div>
<div></div>
<div>Avez vous déjà fait ça une fois ?</div>
<div>merci pour votre aide</div>14 mai 2018 à 12 h 05 min #2151005j’ai essayé autre chose :
function boutoncode($atts, $content = null) {
extract(shortcode_atts(array(
'lien' => '#',
'couleur' =>'bleu'
), $atts));
$codecode = '
<form method="post" >
<input class="bouton '.$couleur.'" type="submit" name="envoyer" value="Cliquez ICI pour recevoir par Email le CODE PROMO" />
</form>';
$postcode = $_POST['envoyer'];
if ( isset($postcode) ) {
// Code PHP pour traiter l'envoi de l'email - header général
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $email))
{
$passage_ligne = "\r\n";
}
else
{
$passage_ligne = "\n";
}
$headers = 'From: MAplus'.$passage_ligne;
$headers .= "MIME-Version: 1.0".$passage_ligne;
$headers .= 'Content-type: text/html; charset=UTF-8' .$passage_ligne;
mail('monmail@gmail.com', 'test shortcode', 'test', $headers);
echo 'ENVOI ?';
// include("send-email-contact.php");
}
return $codecode;
}
add_shortcode('boutoncode', 'boutoncode');J’ai le bouton, je clique, j’ai le texte « ENVOI ? » qui s’affiche mais je ne reçois toujours pas d’Email.
Donc cette fois ci, je n’ai pas inclue l’action « envoi de mail » dans un return…..
du coup, je me demande si j’envoi bien le mail… (j’ai mis une vrai adresse Email bien sûr).
a votre avis, est ce que l’action envoi de mail peut fonctionner ainsi ?
14 mai 2018 à 12 h 29 min #2151013Quand j’essaie de voir ce que retourne mail
function boutoncode($atts, $content = null) {
global $wpdb;
extract(shortcode_atts(array(
'lien' => '#',
'couleur' =>'bleu'
), $atts));
$codecode = '
<form method="post" >
<input class="bouton '.$couleur.'" type="submit" name="envoyer" value="Cliquez ICI pour recevoir par Email le CODE PROMO" />
</form>';
$postcode = $_POST['envoyer'];
if ( isset($postcode) ) {
// Code PHP pour traiter l'envoi de l'email - header général
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", 'monemail@gmail.com'))
{
$passage_ligne = "\r\n";
}
else
{
$passage_ligne = "\n";
}
$headers = 'From: MAplus'.$passage_ligne;
$headers .= "MIME-Version: 1.0".$passage_ligne;
$headers .= 'Content-type: text/html; charset=UTF-8' .$passage_ligne;
mail('monemail@gmail.com', 'test shortcode', 'test', $headers);
if (mail('maity_max@yahoo.fr', 'test shortcode', 'test', $headers)==true)
{
echo 'ENVOI';
}
else
{
echo ' PB ENVOI';
}
// include("send-email-contact.php");
}
return $codecode;
}
add_shortcode('boutoncode', 'boutoncode');Avec le code ci dessus, le texte ‘ENVOI s’affiche, cela veut dire que la fonction mail renvoi true.
Mais je ne reçois pas de mail.
auriez vous un indice ou une remarque pour moi ?
merci beaucoup
16 mai 2018 à 11 h 04 min #2151574Bonjour,
Comme ca sans test c’est pas facile de debug, j’essaierais d’utiliser les fonctions de WP en premier lieu:
et voir ce que https://www.mail-tester.com/ reponds lorsque vous envoyez un mail depuis votre shortcode a l’adresse qu’ils fournissent.
Si ca se trouve, vous ne le recevez pas pour des raisons autres que votre code.
16 mai 2018 à 11 h 21 min #2151585bonjour, et meri.
oui c’est sur je comprends.. j’ai aussi essayé avec WP_mail comme ça fonctionne pas , j’ai testé pas mal de chose.
J’ai regardé les spams aussi….
maintenant, il y a apparement un problème avec les adresses Email de l’hebergement et l’envoi d’Email à partir de ces adresses.
Bon, je ne les utilise pas dnas mon shortcode mais si le smtp est bloqué peut être que cela vient de là ..je reviens avec la solution j’espère
16 mai 2018 à 11 h 51 min #2151598avez vous testé le site que je vous ai signalé? S’il y a un soucis dans le transport du ail, il vous le signalera.
c’est vrai que par defaut WP envoi des emails via l’adresse wordpress@example.com et si l’adresse n’existe pas, bon nombre de serveurs blacklists l’expediteur….
J’ai un mu-plugin qui permet de gérer ca: https://github.com/sebastienserre/thfo-mail-address
17 mai 2018 à 11 h 33 min #2152098Bonjour,
Et bien le dernier code que j’ai posté fonctionne.
En fait, l’envoi des mails ne fonctionnait pas à cause d’un problème sur l’hébergement.
donc tout est bon !
merci beaucoup !
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.