Je souhaite appeler wp_mail()
à partir d'un fichier non-template PHP, mais lorsque je le fais, il échoue et je ne comprends pas pourquoi. Par exemple, supposons que j’ai un fichier PHP composé uniquement de ceci:
<?php
echo 'hi';
$mail_sent = wp_mail('[email protected]', 'subject', 'message');
echo $mail_sent;
?>
Si je charge ce fichier PHP directement dans mon navigateur, seul "hi" sera imprimé. Si je supprime echo 'hi';
au total, rien n’est imprimé, ce qui m’indique que wp_mail()
ne peut pas être appelé dans ce contexte particulier. Cependant, si j'ajoute /* Template Name: SomeName */
au fichier et crée une nouvelle page en utilisant SomeName
comme modèle, wp_mail()
est exécuté correctement. Clairement, il me manque des informations essentielles sur la manière d'appeler correctement wp_mail()
.
La raison pour laquelle je veux faire cela est parce que le thème que j'utilise est venu avec un formulaire de contact qui envoie un email via une requête ajax à peu près comme ceci:
form.submit(function() {
$j.ajax({
type: 'GET',
url: "http://www.example.com/wp-content/themes/themeX/send_mail.php",
data: form.serialize(),
});
});
Actuellement, send_mail.php
appelle la fonction PHP mail()
qui "fonctionne" mais qui est extrêmement feuilletée. Je veux qu'il appelle wp_mail()
afin que je puisse profiter de ce plugin qui envoie un courrier en utilisant un serveur SMTP. Ma question est donc la suivante: comment puis-je faire fonctionner wp_mail()
dans cette situation?
Merci!
Le script autonome ne chargera pas WordPress, il n'a donc pas de fonction wp_mail()
. WordPress a ses propres gestionnaires Ajax intégrés que vous pouvez exploiter et avoir accès à toutes les fonctionnalités de WordPress au sein de ces appels Ajax.
Vous pouvez également inclure les fonctions Wordpress dans votre script autonome comme suit:
require_once('wp-blog-header.php');
Je trouve que les fonctions WP ajax ne sont pas toujours la meilleure façon de faire. Par conséquent, l'écriture de votre propre gestionnaire AJAX est tout à fait valide.
wp_mail est une Fonction Pluggable vous devriez donc pouvoir appeler wp-includes/pluggable.php et ensuite avoir la capacité d'utiliser wp_mail ().