Приветствую всех, уважаемые хабровцы! Возникла такая задача, вроде и простая, но всю голову сломал. Суть в чем. У меня есть страница рубрики, в которой выводятся посты. На этой же странице есть форма поиска, в которой я через скрытое поле передаю переменную категории в ajax запрс
<form role="search" method="get" class="" id="searchform" action="">
<input class="search-form__input input-search ajax_preloader" type="text" value="<?php echo get_search_query() ?>" name="s" id="s" autocomplete="off" placeholder="What are you looking for?"/><div id="ajax_preloader"><img src="/images/circle.gif" alt=""/></div>
<input type="hidden" name="category_id" class="category_id" value="<?php echo $category->cat_ID; ?>"/>
<button type="button" id="searchsubmit" class="search-button"><img src="/svg/search-icon-block.svg" alt="" />
</button>
</form>
Обработал в аяксе(я там с разных форм много чего передаю)
$('#searchform input').keydown(function(event){
if(event.keyCode == 13){
event.preventDefault();
let search_value = $('.search-form__input').val();
let cat_id = $('.category_id').val();
let author_name = $('.author_name').val();
let tag_id = $('.tag_id').val();
let year_num = $('.year_num').val();
let month_num = $('.month_num').val();
let day_num = $('.day_num').val();
if (search_value.length > 2) { // кол-во символов
$('#ajax_preloader').show();
$.ajax({
url: '/wp-admin/admin-ajax.php',
type: 'POST',
data: {
'action': 'ajax_search', // functions.php
'term': search_value,
'cat_id': cat_id,
'author_name': author_name,
'tag_id': tag_id,
'year_num': year_num,
'month_num': month_num,
'day_num': day_num,
},
success: function (results) {
search_results.fadeIn(200).html(results);
$('#ajax_preloader').hide();
}
});
} else {
search_results.fadeOut(200);
}
И передаю в обработчик
// ajax поиск по сайту
add_action('wp_ajax_nopriv_ajax_search', 'ajax_search');
add_action('wp_ajax_ajax_search', 'ajax_search');
function ajax_search()
{
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'order' => 'DESC',
//'posts_per_page' => -1,
'orderby' => 'date',
's' => $_POST['term'],
'cat' => $_POST['cat_id'],
'author_name' => $_POST['author_name'],
'tag_id' => $_POST['tag_id'],
'date_query' => array(
array(
'year' => $_POST['year_num'],
'month' => $_POST['month_num'],
'day' => $_POST['day_num'],
),
),
);
add_filter( 'posts_search', 'search_by_title', 10, 2 );
$query = new WP_Query($args);
remove_filter( 'posts_search', 'search_by_title', 500 );
echo '<span class="search_text">You have';
echo '<span class="search_count">'.$query->found_posts. '</span>';
echo 'search results</span>';
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
get_template_part('loop');
}
} else { ?>
<div class="ajax-search__item">
<div class="ajax-search__not-found">Nothing found</div>
</div>
<?php }
exit;
}
Все ок, цикл выводится, вроде пора радоваться, но...А как сделать разбиение на страницы именно результата вывода? Смотрел и пробовал разные варианты, стандартная пагинация в этом цикле не работает. ..Как правильно разбить цикл на отрезки, например, по десять постов, и показывать их, например по клику на 1,2,3 и т.д?