Добрый день, уважаемые коллеги!
Суть в чем - я пытаюсь получить в ajax запросе при клике на div с определенным data-атрибутом ответ с элементами, которые имеют такой же data-атрибут, и не грузить все остальное. Как это можно сделать?
Вот то, что я пытался сделать. Это основной блок:
<div id="block_first">
<?php
$material_first = get_field( 'materials_general'); //Главный повторитель
foreach( $material_first as $main_element ): //Цикл получения значений ?>
<div data-subid="<?php echo $main_element['id_material']; //вывод дата-атрибута ?>" class=""><?php echo $main_element['materials_name']; ?></div>
<?php endforeach; ?>
</div>
<div id="block_second"></div> <?php //вывод здесь вывожу результаты запроса ?>
Вот мой Аякс запрос
$('#block_first div').on('click', function (event) { //отследил клик
var post_id = <?php echo $post->ID; ?>; //получил Айди поста
$.ajax({
url: "/wp-admin/admin-ajax.php",
data: {
action: "material_query", //обратился к функции на сервер
'post_id': post_id, //передал на сервер Айди поста
subid : $(this).data('subid') //передал на сервер дата-атрибут элемента, на который кликнул
},
success: function(data) {
$("#block_second").append(data) //загрузил ответ сервера в нужный мне блок
},
});
});
Запрос обрабатываю в функции в файле functions.php
add_action('wp_ajax_nopriv_material_query', 'material_query');
add_action('wp_ajax_material_query','material_query');
function material_query(){
$post_id = $_GET['post_id'];
$id_elem = $_GET['subid'];
$material = get_field( 'materials_general', $post_id);
foreach( $material as $element ): //Основной цикл
?><div data-subid="<?php echo $element['id_material']; ?> ">
<?php foreach ( $element['color_materials'] as $subitem ): //Цикл, в котором передаю вложеный повторитель ?>
<span><a href=""><?php echo $subitem['color_name']; ?></a></span>
<?php endforeach;?>
</div>
<div data-subid="<?php echo $element['id_material']; ?> ">
<?php foreach ( $element['printing_materials'] as $subitem ): //Цикл, в котором передаю вложеный повторитель ?>
<span><a href=""><?php echo $subitem['printing_name']; ?></a></span>
<?php endforeach;?>
</div>
<?php
endforeach;
die;
}
В общем, через foreach прохожу по двум массивам(основному и дополнительному повторителям). Все это отлично выводит в ответе. Но...Как отсеять лишнее? Как сделать так, чтобы в ответе было только то, что относится к элементам, имеющим тот же дата-атрибут, как и тот, по которому кликнули? Помогите, пожалуйста, а то уже столько вариантов перепробовал, сколько гуглил, ничего не работает нормально((((