JS some.php
function ajaxFilter(){
var spiner_x = (spiner_cont_w / 2) - 75;
$('#spiner2').css({'display': 'block', 'left' : spiner_x});
$.ajax({
url: ajax_url, //var ajax_url = '<?=get_site_url();?>/wp-admin/admin-ajax.php';
type: "POST",
data: {
action: 'filter_events',
listarr: checked_listArr, //какие-либо значения
},
success: function (data) {
let res = JSON.parse(data); //если в json
//console.log("Данные пришли");
}
});
}
admin-ajax.php перенаправляет данные в functions.php
functions.php
add_action('wp_ajax_filter_events', 'filter_events_action');
add_action('wp_ajax_nopriv_filter_events', 'filter_events_action');
function filter_events_action(){
//какие-то действия
$args = array(
'post_type' => 'events',
'posts_per_page' => -1,
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'event_category',
'field' => 'slug',
'terms' => $_POST['listarr']
)
)
);
$events_arr = new WP_Query;
$events = $events_arr->query( $args );
$res_date_arr = array();
foreach( $events as $event ){
$fields_arr = array();
array_push($fields_arr,
$event->ID,
date("d-m-Y", strtotime(get_field('date_for_sort', $event->ID))),
esc_html( $event->post_title ),
get_the_post_thumbnail_url( $event->ID ),
get_field('дата_проведения', $event->ID),
get_field('время_проведения', $event->ID),
get_field('место_проведения', $event->ID),
get_field('спикеры3', $event->ID),
get_field('организация', $event->ID),
get_permalink($event->ID)
);
$terms = get_the_terms($event->ID, 'event_category');
$term_arr = array();
foreach ($terms as $term){
array_push($term_arr, [$term->slug, $term->name]);
}
array_push($fields_arr, $term_arr);
array_push( $res_date_arr, $fields_arr);
}
//массив преобразуем в json для отдачи обратно
echo json_encode($res_date_arr, JSON_UNESCAPED_UNICODE);
wp_die();
}