Как отправить значение флажка на электронную почту

Вопрос или проблема

HTML формы приведен ниже

<?php                             
 for($i=$start;$i < $end ;++$i)
 {                  
     if($emails[$i]!=""){                        
     $userId=$emails[$i]['ID'];
     $user_info = get_users($userId); 
     echo"<tr class="iedit alternate">
     <td  class="name column-name" style="border:1px solid #DBDBDB;padding-left:13px;"><input type="checkbox" id='haet_mail_test_address' name="ckboxs[]"  value="".$emails[$i]["user_email']."'>&nbsp;".$emails[$i]['user_email']."</td>";
      echo "<td  class="name column-name" style="border:1px solid #DBDBDB;"> ".$user_info->user_login."</td>";
      echo "</tr>";
     }                              
}                       
?>
<button class="button-primary" id="haet_mail_test_submit" name="submit" type="submit">Отправить письмо</button>
<div id="haet_mail_test_sent" class="haet-mail-dialog" title="<?php _e('Email sent','wp-html-mail'); ?>">
<p>
<?php _e('Your message has been sent.','wp-html-mail'); ?>
</p>

ниже мой Javascript код

$('#haet_mail_test_submit').click(function(){
    var checkbox = $('#haet_mail_test_address').val();
    $.post(ajaxurl, { 'action':'haet_mail_send_test', 'checkbox':checkbox} , function(response) {
        $( "#haet_mail_test_sent" ).dialog({
            dialogClass: "no-close",
            modal: true,
            buttons: [
                {
                    text: "OK",
                    click: function() {
                        $( this ).dialog( "close" );
                    }
                }
            ]
        });
    });
});

AJAX функция приведена ниже

function send_test() {
    $email= $_POST['checkbox'];
    echo $email;        
    wp_mail( $email, ''.$email.'');
    wp_die();
}

Я новичок в WordPress, так что как я могу отправить значения чекбоксов в wp_mail

Сначала вам нужно добавить класс для всех чекбоксов, так как использование одного и того же id для нескольких элементов не рекомендуется

<input type="checkbox" class="new_class" id='haet_mail_test_address' name="ckboxs[]"  value="".$emails[$i]["user_email']."'>

Теперь нам нужно изменить способ получения значений из чекбоксов

Измените

var checkbox = $('#haet_mail_test_address').val();

На

var checkbox = $(".new_class:checkbox:checked").map(function(){
  return $(this).val();
}).get();

console.log(checkbox); // проверьте, получаете ли вы значения здесь

Теперь в “checkbox” вы получите массив значений выбранных чекбоксов. Теперь вы можете передать его в AJAX функцию как данные

.

Ответ или решение

Чтобы отправлять значения чекбокса на электронную почту в WordPress, следует правильно настроить HTML-форму, JavaScript и PHP/AJAX функцию. Рассмотрим каждый этап подробнее:

Шаг 1: Исправление HTML

Во-первых, избегайте использования одинакового id для нескольких элементов, заменив его на класс. Это улучшает доступность и соответствие стандартам HTML.

<?php                             
for($i=$start; $i < $end; ++$i) {                  
    if($emails[$i] != "") {                        
        $userId = $emails[$i]['ID'];
        $user_info = get_users($userId); 
        echo '<tr class="iedit alternate">
                <td class="name column-name" style="border:1px solid #DBDBDB;padding-left:13px;">
                    <input type="checkbox" class="haet_mail_test_address" name="ckboxs[]" value="'.$emails[$i]["user_email"].'">&nbsp;'.$emails[$i]['user_email'].'
                </td>';
        echo '<td class="name column-name" style="border:1px solid #DBDBDB;">'.$user_info->user_login.'</td>';
        echo '</tr>';
    }                              
}                       
?>
<button class="button-primary" id="haet_mail_test_submit" name="submit" type="submit">Send Email</button>
<div id="haet_mail_test_sent" class="haet-mail-dialog" title="<?php _e('Email sent', 'wp-html-mail'); ?>">
    <p><?php _e('Your message has been sent.', 'wp-html-mail'); ?></p>
</div>

Шаг 2: JavaScript для сбора значений чекбоксов

Используйте класс для получения выбранных значений чекбоксов и создайте массив, который затем можно передать вместе с AJAX-запросом.

$('#haet_mail_test_submit').click(function(event) {
    event.preventDefault(); // Предотвращение стандартной отправки формы

    var checkboxValues = $(".haet_mail_test_address:checked").map(function(){
        return $(this).val();
    }).get();

    console.log(checkboxValues); // Проверка получения значений

    $.post(ajaxurl, { action: 'haet_mail_send_test', checkbox: checkboxValues }, function(response) {
        $("#haet_mail_test_sent").dialog({
            dialogClass: "no-close",
            modal: true,
            buttons: [
                {
                    text: "OK",
                    click: function() {
                        $(this).dialog("close");
                    }
                }
            ]
        });
    });
});

Шаг 3: Обработка AJAX-запросом в PHP

Настройте вашу PHP-функцию так, чтобы она могла обрабатывать массив полученных данных.

function send_test() {
    if (!empty($_POST['checkbox']) && is_array($_POST['checkbox'])) {
        $emails = $_POST['checkbox'];

        foreach ($emails as $email) {
            echo $email;  // Вывод для отладки
            wp_mail($email, 'Message Subject', 'Message Body'); // Необходимо добавить тему и тело письма
        }
    } else {
        echo "No email selected.";
    }

    wp_die(); // Всегда завершайте AJAX-процедуру этой функцией
}

Итог

Применение описанных техник позволит успешно отправлять значения выбранных чекбоксов на указанные адреса электронной почты. Обратите внимание на необходимость добавления субъектов и тела сообщения в функцию wp_mail.

SEO-Оптимизация

Убедитесь, что ваши статьи и описания формы содержат релевантные ключевые слова, такие как “отправка email через чекбокс”, “WordPress AJAX mail” для улучшения индексации и привлечения новых пользователей.

Обратите Внимание

Будьте аккуратны с безопасностью, всегда проверяйте и очищайте пользовательские данные, чтобы предотвратить возможные уязвимости.

Оцените материал
Добавить комментарий

Капча загружается...