调用未定义的函数wp_mail

时间:2015-07-08 13:12:47

标签: php wordpress cron

您好我在Cron网页上使用Wordpress的这个功能,并在我的电子邮件中抛出此错误

致命错误:在 /home/meusite/public_html/wp-content/themes/escotec/page-cron.php 上调用未定义的函数wp_mail() 33

这里是代码

foreach($inscricoes as $key => $item){



    $emailSent = false;



    $emailTo = "$item->getEmail()";

//echo "..1";

    $subject = '[Escotec]: Dados para pagamento de inscrição ';
    $body = "Parabéns $inscricao->nome, sua inscrição no curso ".$item->getTurmas()[0]->getCurso()->getNome()." foi efetuada. <p>Para concluir o pagamento da inscrição clique no link abaixo ou cole-o diretamente na barra de endereços de seu Navegador: </p><br>";
    $body .= "<a href=\"http://escotecnordeste.com.br/pagamento/?email=".$item->getEmail()."&pedido=".$item->getPagamentoId()."\" target=\"_blank\">http://escotecnordeste.com.br/pagamento/?email=".$item->getEmail()."&pedido=".$item->getPagamentoId()."</a>";
    $headers = 'From: Escotec Nordeste <escotecnordeste@gmail.com>' . "\r\n" . 'Reply-To: ' . 'escotecnordeste@gmail.com';





    wp_mail($emailTo, $subject, $body, $headers);


    $emailSent = true;
// http://escotecnordeste.com.br/pagamento/?email=leandrocezar.dev@gmail.com&pedido=11

// Codificar envio do e-mail
    if ($emailSent) {
    // Atualizar registro do pedido para email_enviado = 'S'

        InscricaoDAO::RegistraEnvioEmail($item->getPagamentoId());
    }
}

Ty求助

6 个答案:

答案 0 :(得分:10)

请在您的文件中添加以下代码。你调用wp_mail()函数的地方。

将此代码添加到文件顶部。

require_once("../../../wp-load.php");

或将您的功能wp_mail()更改为mail()

答案 1 :(得分:1)

您正在调用wp_mail()函数,该函数可以包含在wp-load.php中。

require_once("wp-load.php");

答案 2 :(得分:0)

尚未定义函数wp_mail()。这是这个页面上的所有代码吗? wp_mail()在此文件中。 WP-包括/ pluggable.php。您必须在调用函数之前包含它。

答案 3 :(得分:0)

你需要wp-load.php,这样函数可以毫无问题地使用,该文件加载wordpress的每个函数

如果你的路径是/home/meusite/public_html/wp-content/themes/escotec/page-cron.php,那么使用此路径来要求wp-load:

require_once( dirname(__FILE__) . '/wp-load.php' );"





foreach($inscricoes as $key => $item){



$emailSent = false;



$emailTo = "$item->getEmail()";

//echo "..1";

$subject = '[Escotec]: Dados para pagamento de inscrição ';
$body = "Parabéns $inscricao->nome, sua inscrição no curso ".$item->getTurmas()[0]->getCurso()->getNome()." foi efetuada. <p>Para concluir o pagamento da inscrição clique no link abaixo ou cole-o diretamente na barra de endereços de seu Navegador: </p><br>";
$body .= "<a href=\"http://escotecnordeste.com.br/pagamento/?email=".$item->getEmail()."&pedido=".$item->getPagamentoId()."\" target=\"_blank\">http://escotecnordeste.com.br/pagamento/?email=".$item->getEmail()."&pedido=".$item->getPagamentoId()."</a>";
$headers = 'From: Escotec Nordeste <escotecnordeste@gmail.com>' . "\r\n" . 'Reply-To: ' . 'escotecnordeste@gmail.com';





wp_mail($emailTo, $subject, $body, $headers);


$emailSent = true;
// http://escotecnordeste.com.br/pagamento/?email=leandrocezar.dev@gmail.com&pedido=11

// Codificar envio do e-mail
if ($emailSent) {
// Atualizar registro do pedido para email_enviado = 'S'

    InscricaoDAO::RegistraEnvioEmail($item->getPagamentoId());
}
}

答案 4 :(得分:0)

这对我有用:

add_action( 'wp_loaded', 'cron_time' );

它适用于所有地方,几乎总是,特别是对于ajax。

不要包含wordpress核心文件。这是不好的做法。像这样:

require_once( dirname(__FILE__) . '/wp-load.php' );

答案 5 :(得分:0)

Tonny提供的解决方案适合我。我的代码:

function your_function_name() {
        $to =' your@email.com';
        $subject = 'The subject';
        $body = 'The email body content';
        $headers = array('Content-Type: text/html; charset=UTF-8');
        wp_mail( $to, $subject, $body, $headers );
}
add_action( 'wp_loaded', 'your_function_name' );