Как отобразить содержимое функции в PHP

#php #wordpress #phpmailer

#php #wordpress #phpmailer

Вопрос:

Я использую WP mail для отправки электронного письма. У меня есть 2 разные версии электронной почты, которые я хочу отправить на основе определенного значения. Приведенный ниже код является самостоятельным расширением.

 function implement_ajax_apartmentsearchemail() {



    if ( ($_POST['email']) ) {
        //get the correct page ID
        $to = ($_POST['email']);
        $name = ($_POST['name']);
        $subject = 'Our Recommendations.';
        $postidstring = ($_POST['postidstring']);   
        $reseller = ($_POST['reseller']);   

        if ($reseller == '') {
            $message = emailcontentscp($postidstring, $name);
        } else {
            $message = emailcontentreseller($postidstring, $reseller, $name);
        }            

        $subject = 'Our Recommendations';
        $headers = "Content-type: text/html;charset=UTF-8n";
        $headers .= "X-Priority: 3n";
        $headers .= "X-MSMail-Priority: Normaln";
        $headers .= "X-Mailer: phpn";
        $headers .= "From: Serviced City Pads  <bookings@citypadsmail.com>n";    
        wp_mail( $to, $subject, $message, $headers);   

        die();
    }


}   

add_action('wp_ajax_apartmentsearchemail', 'implement_ajax_apartmentsearchemail');
add_action('wp_ajax_nopriv_apartmentsearchemail', 'implement_ajax_apartmentsearchemail');
  

Я пытаюсь проверить, является ли переменная $reseller истинной или нет, если это так, то запустите шаблон почты реселлера, а если нет, то запустите обычный шаблон почты SCP.

Мое условие работает до такой степени, что я возвращаю правильный шаблон электронной почты в консоль, однако, когда я сбрасываю переменную $message, она возвращается ни с чем.

Мои функции расположены следующим образом в разных файлах.

 function emailcontentscp($postidstring, $name) {
 //wp query to get some posts in a nice looking layout

 //loop start
     <div id="post-entry">some content</div>
 //loop end resetpostdata();

 //there is no return() here.  
}
  

Комментарии:

1. Используете ли вы return in emailcontentscp() с желаемым результатом?

2. установлен ли $_POST[‘реселлер’]?

3. Я попробовал условную проверку без функций и просто добавил немного текста, и почта работала как с размещением опции реселлера, так и без нее. Кроме того, нет, я не использую return в функции. Я обновлю приведенную выше функцию, чтобы дать вам лучшее представление о том, что у меня есть.

4. Ну… используйте return , а не echo (или что бы вы ни использовали).

5. Куда бы я добавил return; . После функции или в конце ее. Извините, мои навыки PHP все еще растут.

Ответ №1:

Для того, чтобы получить возвращаемое значение функции и присвоить его $message , функции нужно return что-то. Вместо вывода HTML-кода сохраните его в переменной, и return он:

 function emailcontentscp($postidstring, $name) {
    $template = '<div ...>';

    foreach (...) {
        $template .= '<li ...>';
    }

    return $template;
}
  

Комментарии:

1. спасибо за это. Будет ли мой запрос работать внутри этой переменной. Это буквально выглядело бы как $template = ‘<div>цикл </div>’;

2. Ну, нет, именно поэтому я демонстрирую, как добавлять $template внутри цикла.