#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
inemailcontentscp()
с желаемым результатом?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
внутри цикла.