J'utilise un plugin wordpress-simple-Paypal-shopping-cart pour les besoins de mon panier. J'essaie d'envoyer un email via ce plugin lorsqu'un paiement est effectué en utilisant IPN.
Mon code:
$invoiceProducts = $_SESSION['simpleCart'];
if(isset($invoiceProducts) && !empty($invoiceProducts)){
$html = renderHTML($invoiceProducts);
generatePDF($html);
unset($invoiceProducts);
}
function renderHTML($param){
$IPN = $_POST;
$name = $IPN['first_name'];
$donationAmount = $IPN['payment_gross'];
$contributorsEmail = $IPN['payer_email'];
$contributorsPhone = $IPN['payer_email'];
$contributorsAddr = $IPN['address_name'] . ', ' . $IPN['address_city'] . ', ' . $IPN['address_country'];
//We will need to shoot email to laura of successfull payment.
$to = '[email protected]';
$subject = 'Donation made on your website';
$message = '';
$message .= '<html><body>';
$message .= '<p>You have received a contribution from<strong>'.$name.'</strong> of <strong>'.$donationAmount.'</strong></p>';
$message .= '<p>Contributor Information:</p>';
$message .= '<ul>';
$message .= '<li>Name:'.$name.'</li>';
$message .= '<li>Amount:'.$donationAmount.'</li>';
$message .= '<li>Email:'.$contributorsEmail.'</li>';
$message .= '<li>Address:'.$contributorsAddr.'</li>';
$message .= '</ul>';
$message .= '</body></html>';
wp_mail( $to, $subject, $message, $headers, $attachments );
}
Mais lorsque cette fonction est appelée, j'obtiens cette erreur: Fatal error: Call to undefined function wp_mail()
Je sais pourquoi je reçois cette erreur, c’est juste que mon plugin est chargé en premier plutôt que wp_mail()
.
Dans mon cas, comment puis-je appeler wp_mail()
d'abord puis mon plugin?
wp_mail()
est défini dans wp-includes/pluggable.php
. Ce fichier est chargé après les plugins, mais avant le raccordement du plugins_loaded
.
La réponse est donc: attendez.
add_action( 'plugins_loaded', 'renderHTML' );
Sur une note de côté: prefix vos noms de fonction et vos variables globales.