J'essaie d'envoyer des courriels via WordPress à l'aide de la fonction wp_mail()
et cela ne semble pas fonctionner.
Il affiche 0
dans la réponse "Réseau" de Chrome avec
Status Code:200 OK
Ceci est ma partie de code:
// Contact form Ajax
add_action('wp_ajax_nopriv_submit_contact_form', 'submit_contact_form');
function submit_contact_form(){
if(isset($_POST['email'])) {
$email = $_POST['email'];
$email_to = "[email protected]";
$Host = "ssl://smtp.gmail.com:465";
$username = '[email protected]';
$password = 'passpass';
$email_subject = "You have a new email from $email via company.com website";
$message = $_POST['text'];
$headers = array ('From' => $email, 'To' => $email_to,'Subject' => $email_subject);
/*$smtp = Mail::factory('smtp',
array ('Host' => $Host,
'auth' => true,
'username' => $username,
'password' => $password));*/
//$mail = $smtp->send($email_to, $headers, $message);
wp_mail( $email_to, $email_subject, $message );
/*if (PEAR::isError($mail)) {
echo($mail->getMessage());
} else {
echo("Message successfully sent!\n");
}*/
}
}
error_reporting(E_ALL);
ini_set("display_errors", 1);
Quelle partie peut être fausse?
Modifier:
Ceci est la partie ajax:
// Send button for the "contact form".
$('#sendBtn').click(function(){
//get info
var fullname = $("#fullname").val();
var email = $("#email").val();
var text = $("#text").val();
//send info to php
$.ajax({
beforeSend: function() {
if ( IsEmail(email) == false) {
$('#aboutUnsuccess').show("slow");
$('.form_content').hide("slow");
}
},
url: document.location.protocol+'//'+document.location.Host+'/wp-admin/admin-ajax.php',
type: "POST",
/*action: 'submit_contact_form',*/
data: ({ "action": "submit_contact_form", "fullname": fullname, "email": email, "text": text }),
success: function (results){
if ( IsEmail(email) == true) {
//hide table
$('.form_content').hide('slow', function() {
$('.form_content').hide( "slow" );
});
//show textboxes
$('#aboutSuccess').show("slow");
$( "#aboutSuccess" ).append( "<iframe id=\"pixel-thing\" src=\"http://54.xx.xx.xx/wp-content/themes/twentyfifteen-child/thePixel.html\" width=\"1\" height=\"1\" border=\"0\"></iframe>" );
}
}
});
});
Comme il s'agit d'une fonction AJAX, votre fonction doit exit;
ou die();
après la dernière ligne du code exécuté, en dehors de l'instruction if avant le }
final.
Cependant, je ne pense pas que ce soit le vrai problème. Si vous obtenez un 0
renvoyé dans mon expérience, cela signifie que la fonction n'est pas en cours d'exécution car admin-ajax.php renvoie 0
si elle atteint la fin du fichier et ne le détecte pas. votre fonction.
Pouvez-vous envoyer la demande AJAX?
Également pour le débogage (parce que votre fonction ne retourne rien, pour le moment), avant d'ajouter le exit;
ou le die();
, vous souhaiterez peut-être ajouter une réponse pour vérifier que votre fonction est bien en cours d'exécution. J'utilise généralement quelque chose comme:
header("Content-Type: application/json", true);
echo json_encode( array("AJAX" => "Success") );