【问题标题】:Call to undefined function wp_mail调用未定义的函数 wp_mail
【发布时间】:2015-09-26 10:18:06
【问题描述】:

您好,我在 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());
    }
}

求救

【问题讨论】:

标签: php wordpress cron


【解决方案1】:

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

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

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

或将你的函数 wp_mail() 更改为 mail()

【讨论】:

    【解决方案2】:

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

    require_once("wp-load.php");
    

    【讨论】:

      【解决方案3】:

      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' );
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          你需要需要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());
          }
          }
          

          【讨论】:

            【解决方案6】:

            这对我有用:

            add_action( 'wp_loaded', 'cron_time' );
            

            它几乎总是在任何地方都有效,尤其是对于 ajax。

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

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

            【讨论】:

              猜你喜欢
              • 2014-08-03
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-10-30
              • 2015-02-11
              • 2016-11-12
              • 2013-02-14
              相关资源
              最近更新 更多