Неработеща имейл функция от Wordpress тема

+1 глас
37 прегледа
попитан 1 юли в PHP от nicksss93 (130 точки)

Здравейте,

Имам нужда от помощ във връзка с имейл функция, част от тема за Wordpress, която не работи коректно. Темата и сайтът са подобни като модел на freelance marketplace, като имат 2 категории потребители - едни публикуват запитвания, а други изпращат предложения към тях. Въпросният имейл следва да изпраща уведомителен имейл към freelancer потребителите, когато има ново публикувано запитване в някоя от категориите, с които те се занимават. Това обаче не става на практика, като не съм сигурен откъде се получава разминаването...

Това е кода за имейл функцията:

    function new_project_of_category($project){
        global $ae_post_factory, $post;

        $post_object = $ae_post_factory->get( PROFILE );
        $args = array(
            'post_type'     => PROFILE,
            'post_status'   => 'publish',
            'tax_query'     => array(
                array(
                    'taxonomy'  => 'project_category',
                    'field'     => 'term_id',
                    'terms'     => $project->project_category,
                    'operator' => 'IN'
                )
            ),
            'meta_query' => array(
                array(
                    'key'      => 'et_receive_mail',
                    'value'    => 1,
                    'compare'  => "="
                )
            )
        );

        $query = new WP_Query( $args );
        $postdata = array();
        if($query->have_posts()) {
            while($query->have_posts()) {
                $query->the_post();
                $convert    = $post_object->convert($post);
                $display_name = get_the_author_meta('display_name', $convert->post_author);
                $user_email = get_the_author_meta('user_email', $convert->post_author);
                $postdata[] = "{$display_name} <{$user_email}>";
            }
        }
        $subject = __('New Project For You Today!', ET_DOMAIN);
        $headers[] = 'Bcc: '.implode(',', $postdata).'\r\n';

        $template_default = "<p>Hi there,</p><p>There is a new job for you today. Hurry apply for this project [project_link] and get everything started.</p><p>Hope you have a highly effective Day</p>";
        $mail_template = ae_get_option('new_project_mail_template', $template_default);
        $link = "<a rel='nofollow' target='_Blank' href='".$project->permalink."'>".$project->post_title."</a>";
        $mail_template = str_replace('[project_link]', $link, $mail_template);

        // send mail
        $mail = $this->wp_mail(get_option('admin_email') , $subject, $mail_template, array(), $headers);

    }

Всичко останало около сайта е готово, като единствено това остава да се изчисти, за да може вече да се пусне. По принцип не съм програмист и се уча в движение, затова имам нужда от помощ от някой, който е по-навътре от мен в тези неща, да го погледне и да го оправим, така че да работи и сайтът да се пусне, тъй като вече от около седмица само това остава и отлага стартирането на сайта. Готов съм да платя, ако успеем да свършим работа.

Благодаря.

1 отговор

+1 глас
отговорени 22 юли от Павката (2,150 точки)
Тук има обяснена функцията и параметрите, които изисква:
https://www.ostraining.com/blog/wordpress/wp-mail/

  За да проверите дали параметрите, които подавате на wp_mail са това, което се очаква - може да вкарате някой друг дебъг ред. Предлагам ви следните редове (които разбира се да бъдете готов да изтриете след като проблема бъде отсранен):

  // send mail

// here my debug code starts

$go = get_option('admin_email');
$sub = $subject;
$mt = $mail_template;
$head = $headers;

echo $go, "<br>";
echo $sub, "<br>";
echo $mt, "<br>";
echo $head, "<br>";

// here my debug code ends

$mail = $this->wp_mail(get_option('admin_email') , $subject, $mail_template, array(), $headers);

погледнете резултата и проверете за липсващ имеил на изпращача или нещо друго нередно набиващо се на очи.
Успех!
...