11.10.2019, 17:13
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Только как это получается, если эта строка идентификаторов товаров ("это все товары (вывела их с помощью записей на вордпресс)"), а значение полей только одного товара? Или это идентификаторы каких-то параметров одного товара?
|
|
15.10.2019, 00:37
|
Профессор
|
|
Регистрация: 13.08.2017
Сообщений: 167
|
|
Мне нужно чтоб при каждом клике и успешной отправке на сервер, для записей с выбранным id (id получаем при клике) в метаполе pole_booked_product передавалось значение "1". Это метаполе есть в каждой записи. Так не работает
jQuery(document).ready(function() {
jQuery(".submit").on("click", function (event) {
event.preventDefault();
if (jQuery(".block-border").hasClass("active")) {
var name = jQuery('.form-name').val();
var last_name = jQuery('.form-last_name').val();
var form_phone = jQuery('.form-phone').val();
var form_country = jQuery('.form-country').val();
var form_city = jQuery('.form-city').val();
var form_street = jQuery('.form-street').val();
var form_message = jQuery('.form-message').val();
var form_num = jQuery('.form-num').val();
var form_weight1 = jQuery('.form-weight1').val();
var form_weight2 = jQuery('.form-weight2').val();
var form_num2 = jQuery('.form-num2').val();
var form_weight3 = jQuery('.form-weight3').val();
var form_weight4 = jQuery('.form-weight4').val();
var ids = 'post_id_' + jQuery.map(jQuery('.block-border.active'), function(a) {
return jQuery(a).find('.hidd').attr('id')
}).join(', post_id_');
jQuery.ajax({
context: document.body,
url: "/wp-admin/admin-ajax.php",
method: 'post',
data: {
action: 'ajax_order',
name: name,
last_name: last_name,
phone: form_phone,
country: form_country,
city: form_city,
street: form_street,
message: form_message,
form_num: form_num,
form_weight1: form_weight1,
form_weight2: form_weight2,
form_num2: form_num2,
form_weight3: form_weight3,
form_weight4: form_weight4,
//post_id: jQuery('.block-border.active').find('.hidd').attr('id'),
post_id:ids,
meta_val: 1
},
function(date) {
jQuery('.block-border').hasClass("active").find('.hidd').text(date);
},
success: function (response) {
jQuery("#sendform").html('<p class="thank" style="text-align: center;margin-bottom: 0px;">Заказ забронирован!<p>');
}
});
};
});
});
<?php function total_form(){
$name = $_REQUEST['name'];
$last_name = $_REQUEST['last_name'];
$phone = $_REQUEST['phone'];
$country = $_REQUEST['country'];
$city = $_REQUEST['city'];
$street = $_REQUEST['street'];
$message = $_REQUEST['message'];
$form_num = $_REQUEST['form_num'];
$form_weight1 = $_REQUEST['form_weight1'];
$form_weight2 = $_REQUEST['form_weight2'];
$form_num2 = $_REQUEST['form_num2'];
$form_weight3 = $_REQUEST['form_weight3'];
$form_weight4 = $_REQUEST['form_weight4'];
$metaVal = $_POST['meta_val'];
//$post_id = $_POST['post_id'];
$post_id = json_decode($_POST['post_id'], 1); //массив id
//$action = 'post_id_' . $post_id;
$action = 'post_id_' . implode(', post_id_', json_decode($_POST['post_id'], 1));
update_post_meta($post_id, 'pole_booked_product', $metaVal);
//echo get_post_meta($post_id, 'pole_booked_product', true);
$response = '';
$thm = 'Заказ звонка';
$thm = "=?utf-8?b?". base64_encode($thm) ."?=";
$msg = "Имя: ".$name."<br/>
Фамилия: ".$last_name ."<br/>
Телефон: ".$phone ."<br/>
Страна: ".$country ."<br/>
Город: ".$city ."<br/>
Улица: ".$street ."<br/>
Сообщение: ".$message ."<br/>
№ HELIX ASPERSA MULLER: ".$form_num ."<br/>
1 класс HELIX ASPERSA MULLER: ".$form_weight1 ."<br/>
2 класс HELIX ASPERSA MULLER: ".$form_weight2 ."<br/>
№ HELIX ASPERSA MAXIMA: ".$form_num2 ."<br/>
1 класс HELIX ASPERSA MAXIMA: ".$form_weight3 ."<br/>
2 класс HELIX ASPERSA MAXIMA: ".$form_weight4 ."<br/>
";
$mail_to = 'juliaradionova1991@gmail.com';
$headers = "Content-Type: text/html; charset=utf-8\n";
//$headers .= 'From: test@gmail.com' . "\r\n";
// Отправляем почтовое сообщение
if(mail($mail_to, $thm, $msg, $headers)){
$response = 'Сообщение отправлено';
}else
$response = 'Ошибка при отправке';
// Сообщение о результате отправки почты
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ){
echo $response;
wp_die();
}
}
add_action('wp_ajax_nopriv_ajax_order', 'total_form' );
add_action('wp_ajax_ajax_order', 'total_form' ); ?>
Последний раз редактировалось Julia1991, 15.10.2019 в 00:44.
|
|
15.10.2019, 05:23
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Если "для записей с выбранным id (id получаем при клике)", то что означает "как в post_id: jQuery('.block-border.active').find('.hidd').attr('id') передать все полученные id? А не только первый по которому кликнули"? Так и осталось загадкой.
А что касаемо "в метаполе pole_booked_product передавалось значение "1", то зачем же вообще это передавать, если достаточно на сервере указать явно update_post_meta($post_id, 'pole_booked_product', 1); или это значение определяет действия и, например, может быть 0 при удалении?
Показали бы html код одного блока, а так не понятно что за проблемы.
|
|
15.10.2019, 08:48
|
Профессор
|
|
Регистрация: 13.08.2017
Сообщений: 167
|
|
Это код страницы записи
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<span class="cross"><i class="fa fa-times" aria-hidden="true"></i></span>
<p class="product_number"><?php echo get_post_meta($post->ID, 'pole_num_product', true); ?></p>
<div class="block-border">
<p class="product_class"><?php echo get_post_meta($post->ID, 'pole_1', true); ?></p>
<p class="product_title"><?php echo get_post_meta($post->ID, 'pole_2', true); ?></p>
<p class="product_weight"><?php echo get_post_meta($post->ID, 'pole_3', true); ?></p>
<p style="display: none;" class='hidd' id="<?php the_ID(); ?>"><?php echo get_post_meta($post->ID, 'pole_booked_product', true); ?></p>
<?php if ( ! empty( trim( get_post_meta( $post->ID, 'pole_booked_product', true ) ) ) ) {?>
<script>
jQuery("#post-<?php the_ID(); ?>").find('.block-border').removeClass('active').addClass('booked').css("cursor", "default");
jQuery("#post-<?php the_ID(); ?>").closest(".preorder-snails").addClass('booked');
</script>
<?php }
?>
</div>
</div>
|
|
15.10.2019, 09:26
|
Профессор
|
|
Регистрация: 13.08.2017
Сообщений: 167
|
|
post_id: jQuery('.block-border.active').find('.hidd').attr('id') это мы цепляемся за Id этого тега с классом hidd, у этого тега id как и у записи и текстовое значение этого тега должно быть или пустое и 1 (если передадим "1")
|
|
15.10.2019, 09:27
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Это РНР вывод, а код, это результирующий html на странице, который можно получить в браузере, например, в отладчике выбрав блок, выбрать в контекстном меню копирование внешнего html. Или если это так трудно, дайте ссылку на страницу.
|
|
15.10.2019, 09:28
|
Профессор
|
|
Регистрация: 13.08.2017
Сообщений: 167
|
|
|
|
15.10.2019, 09:31
|
Профессор
|
|
Регистрация: 13.08.2017
Сообщений: 167
|
|
нужно чтоб выбрав несколько элементов (чтоб всем выбранным передалось значение "1" в мета поле каждой записи pole_booked_product), у меня пока только получается так, при выборе нескольких - значение получает только первая выбранная запись
|
|
15.10.2019, 09:31
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Julia1991
|
post_id: jQuery('.block-border.active').find('.hidd').attr('id') это мы цепляемся за Id этого тега с классом hidd
|
Тогда почему вы задаете вопрос "как получить все" и вам показывают как их выбрать, то есть массив?
Сообщение от Julia1991
|
у этого тега id как и у записи и текстовое значение этого тега должно быть или пустое и 1 (если передадим "1")
|
Это вообще не понятно, как это id может быть равно чему-то, что всегда передается как 1, да и не может быть пустым?
|
|
15.10.2019, 09:39
|
Профессор
|
|
Регистрация: 13.08.2017
Сообщений: 167
|
|
<p style="display: none;" class='hidd' id="<?php the_ID(); ?>"><?php echo get_post_meta($post->ID, 'pole_booked_product', true); ?></p>
это наше метаполе, этому тегу я присвоила id записи. Он выводится в каждой записи со своим Id. При клике на блоки .block-border я им присваиваю класс .active. При нажатии на кнопку .submit и отправке на сервер, метаполе pole_booked_product должно быть заполнено для все блоков у которых .block-border имеет класс .active на момент отправки на сервер.
Эти все блоки как товары (только с помощью записей). Мне нужно заполнить метаполе в админ-панели для тех товаров, которые купили.
Последний раз редактировалось Julia1991, 15.10.2019 в 09:42.
|
|
|
|