Я получаю ввод и создание формы и вызов AJAX для получения двух отдельных пользовательских типов записей.Основная функция страницы - получить список курсов, который можно отфильтровать по отделу (пользовательская таксономия) и оценке, а также функцию поиска.Курсы являются пользовательским типом поста.Вторая часть заключается в том, чтобы связать сотрудников с отделом и отобразить их в отдельной области на странице.Сотрудники также являются персонализированными типами постов.
В настоящее время я всегда получаю ответы на курсы от вызова AJAX, показывающего как в области курса, так и в области персонала.
AJAX-вызовы
function course_filter() {
var filter = $('#course-filter');
$.ajax({
url: filter.attr('action'),
data: filter.serialize(),
type: filter.attr('method'),
success: function(data) {
$('#course-response').html(data);
}
});
return false;
}
$( document ).ready(function() {
course_filter();
});
$('#apply-course-filter').on('click', function(e) {
e.preventDefault();
course_filter();
course_staff_filter();
});
// Prevent Enter Submit on Course Search
$('#course-search').keypress(function(event) {
if( event.keyCode == 13 ) {
event.preventDefault();
}
});
function course_staff_filter() {
var filter = $('#course-filter');
$.ajax({
url: filter.attr('action'),
data: filter.serialize('department-filter'),
type: filter.attr('method'),
success: function(data) {
$('#course-staff-response').html(data);
}
});
return false;
}
Результаты курса
function filter_courses() {
$args = array(
'post_type' => 'course',
'posts_per_page' => -1,
'orderby' => 'slug',
'order' => 'DESC',
);
if( isset( $_GET['grade-filter'] ) && ( $_GET['grade-filter'] != " " ) ) :
$grade = sanitize_text_field( $_GET['grade-filter']);
$args['meta_query'] = array(
array(
'key' => 'grade',
'value' => $grade,
'compare' => 'LIKE',
)
);
endif;
if( isset( $_GET['department-filter'] ) && ( $_GET['department-filter'] != " " ) ) :
$args['tax_query'] = array(
array(
'taxonomy' => 'department',
'field' => 'id',
'terms' => $_GET['department-filter'],
)
);
endif;
if( isset( $_GET['search'] ) ) :
$search = sanitize_text_field( $_GET['search']);
$query = new WP_Query( array(
'post_type' => 'course',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'tax_query' => $args['tax_query'],
'meta_query' => $args['meta_query'],
's' => $search,
) );
else :
$query = new WP_Query( $args );
endif;
if( $query->have_posts() ) :
while( $query->have_posts() ) : $query->the_post(); ?>
<div class="course-card">
<!-- <?php echo get_post_type(); ?> -->
<h4><?php echo $query->post->post_title; ?></h4>
<div class="course-content">
<?php the_content(); ?>
<p class="grade"><strong>Grade Level:</strong> <?php the_field('grade'); ?></p>
<?php ?>
</div>
</div>
<?php endwhile;
wp_reset_postdata();
else :
echo '<p>Sorry, we could not locate what you were searching for.</p>';
endif;
die();
}
add_action( 'wp_ajax_coursefilter', 'filter_courses' );
add_action( 'wp_ajax_nopriv_coursefilter', 'filter_courses' );
Я хотел бы получить два отдельных вызова AJAX из данных из формы.