web-dev-qa-db-fra.com

Erreur fatale: appel de la fonction non définie wp_mail ()

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?

3
Niraj Chauhan

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.

4
fuxia