Сделал AJAX фильтр записей WordPress. Для простоты включил в него только чекбокс, который включает сортировку записей по порядку (ASC).
Вот функция-обработчик в functions.php, которая делает вывод записей через функцию
get_posts():
function true_filter_function(){
$args = array(
'post_type' => 'pizza',
'order' => 'DESC',
);
// условие: включено ASC - сортировка по порядку
if ( isset( $_POST['in_order'] ) && $_POST['in_order'] == 'on' ) {
$args['order'] = 'ASC';
}
echo "<pre>";
print_r( $args );
echo "</pre>";
$pizza = get_posts( $args );
return $pizza;
}
add_action('wp_ajax_myfilter', 'true_filter_function');
add_action('wp_ajax_nopriv_myfilter', 'true_filter_function');
Это фильтр и вывод постов на странице:
<!-- Фильтр -->
<form action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" method="POST" id="filter">
<label><input type="checkbox" name="in_order"/>Включить сортировку по порядку</label>
<button>Применить фильтр</button>
<input type="hidden" name="action" value="myfilter">
</form>
<div id="response"></div>
<!-- Вывод постов -->
<?php
$pizza = true_filter_function();
foreach ($pizza as $post) : setup_postdata($post); ?>
<div class="post__item">
<h1><?php the_title(); ?></h1>
<?php the_post_thumbnail('thumbnail'); ?>
</div>
<?php endforeach; wp_reset_postdata(); ?>
jQuery-скрипт:
jQuery(function($){
$('#filter').submit(function(){
var filter = $(this);
$.ajax({
url:filter.attr('action'), // обработчик
data:filter.serialize(), // данные
type:filter.attr('method'), // тип запроса
beforeSend:function(xhr){
filter.find('button').text('Загружаю...'); // изменяем текст кнопки
},
success:function(data){
filter.find('button').text('Применить фильтр'); // возвращаем текст кнопки
$('#response').html(data);
}
});
return false;
});
});
В functions.php сделал print_r( $args );. При включении чекбокса "Включить сортировку по порядку" и нажатии на кнопку "Применить фильтр" видно, что в массиве $args меняется значение ключа 'order' с 'DESC' на 'ASC':
но на порядок вывода записей это почему-то никак не влияет.
Подскажите, что я делаю не так?