Не правильно формирует ссылки пагинации wp-paginavi(), kama_pagenavi() . Когда получаешь посты через ajax.
Первый раз при загрузки страниции привильно формирует ссылку : http://wordpress.loc/integrations/page/2/ и пагинация работает.
При подгрузки через ajax ,получаю посты по категории :
http://wordpress.loc/integrations/wp-admin/admin-ajax.php?page=2.
Вопрос почему вставляет wp-admin/admin-ajax.php.
Запрос
JS
function getCategory() {
$(".sidebar .category-menu-desktop .list-category li span").click(function(event) {
event.preventDefault();
$(".sidebar .category-menu-desktop .list-category li span").removeClass("selected");
$(this).addClass("selected");
$('.cutome_post_with_search_and_pagination .content').fadeOut('fast');
var categoryIdDesktop = $(this).attr('data-category-id');
$.ajax({
url: ajax.url,
type: 'POST',
dataType: "html",
data: {
action: 'get_ajax_posts',
category_id: categoryIdDesktop
},
success: function(response) {
$('.cutome_post_with_search_and_pagination .content').html(response).fadeIn('fast');
}
});
});
}
PHP
function get_ajax_posts()
{
global $wp_query;
$paged = (get_query_var('page')) ? get_query_var('page') : 1;
$category_id = $_POST["category_id"];
ob_start();
$query_args = array(
'paged' => $paged,
'posts_per_page' => 5,
'tax_query' => array(
array(
'taxonomy' => 'integrations_taxonomy',
'field' => 'id',
'terms' => $category_id
)
)
);
$query = new WP_Query($query_args);
$i = 1;
?>
<div class="row">
<?php if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post(); ?>
<article class="post">
<div class="heading">
<div class="thumbnail">
<?php the_post_thumbnail(); ?>
</div>
<div class="title">
<h5 class="sub-title">
<?php echo get_field("sub-title"); ?>
</h5>
<h4>
<?php the_title(); ?>
</h4>
</div>
</div>
<div class="description">
<?php the_excerpt(); ?>
</div>
<div class="learn-more"><a href="<?php the_permalink(); ?>">Learn more</a></div>
</article>
<?php if ($i % 2 == 0) {
echo '</div><div class="row">';
} ?>
<?php $i++; ?>
<?php endwhile; ?>
</div>
<div class="pagination">
<?php
if(function_exists('wp_pagenavi') && $query->max_num_pages>1)
{
wp_pagenavi( array( 'query' => $query ) );
}
?>
</div>
<?php else: ?>
<?php echo '<h2>no posts here</h2>'; ?>
<?php endif; ?>
<?php wp_reset_query(); ?>
<?php
$ajax_posts2 = ob_get_contents();
ob_clean();
echo $ajax_posts2;
wp_die();
?>
<?php
}
add_action('wp_ajax_get_ajax_posts', 'get_ajax_posts');
add_action('wp_ajax_nopriv_get_ajax_posts', 'get_ajax_posts');
Вы не передаете аяксом номер текущей пагинации, только id категории. Вам нужно доработать скрипт, а именно вы должны еще передавать значение $paged, этого значения нет в аякс запросе. Вы не правильно реализовали функцию get_ajax_posts().
А разве я не передаю $ paged = (get_query_var ('page'))? get_query_var ('page'): 1 ?.
Можете пожалуйста более подробние объясните.
Это передается в обычной генерации страницы, при аякс запросе ничего этого нет.
Я не пойму зачем мне текущую страницу передавать. Пуска будет текущей страницей первая по умолчанию. Как это повлияет на генерацию ссылок ?
Вам нужно гуглить что такое GET, POST, HEAD и что такое XMLHttpRequest.
У Вас непонимание основ.
Вы что читать не умеет. Или вы вопрос не поняли. Давайте с начала .Просто Ajax пагинация у меня работает погружаются посты делит на страницы. Но когда фильтруешь по таксономиям (категориям) . То тоже все правильно , делит на страницы, но ссылки формирует не правильно. Так понято ? И причем тут основы HTTP ?.
el-lable если вы знаете как сделать ответе , или сделаете за деньги если уж та то пошло, а то я внятного ответа не получил. И погрузка пагинации у меня так реализована.
jQuery(document).on('click', '.cutome-post-integrations .wp-pagenavi a', function(event) { event.preventDefault(); var link = jQuery(this).attr('href'); $('.cutome-post-integrations .content .posts').fadeOut('fast', function() { $('.cutome-post-integrations .content .posts').load(link + ' .content .posts> *', function() { $('.cutome-post-integrations .content .posts').fadeIn('fast'); }); }); });Вероятно оба варианта вывода навигации генерируют "базовый" url страницы используя для этого get_pagenum_link, которая берет базовый url из текущего запроса. А при ajax запрос как раз идут на wp-admin/admin-ajax.php вот оно и добавляется, может не ясно объяснил, но надеюсь суть понятна.
Я с похожей проблемой разобрался так, не найдя другого решения (ну если только не создавать свою навигацию)
$pagenum = (int) $_GET['page']; if (!$pagenum) $pagenum = 1; $result = paginate_links( array( 'base' => @add_query_arg('page','%#%'), 'format' => 'page=%#%', 'current' => $pagenum, 'mid_size' => 7, 'total' => $query->max_num_pages, 'prev_text' => '<', 'next_text' => '>' ) ); $result = str_replace ('/wp-admin/admin-ajax.php', '', $result); echo ($result) ? "<div class='wp-pagenavi'>".$result."</div>" : '';Да я так тоже подумал изначально и посмотрел код в wp-paginavi как формируется ссылка . Так и есть , что плагин берет "базового url" и формирует ссылку. И я примерно тоже так сделал только через фильтр wp-paginavi
add_filter('get_pagenum_link','function_get_pagenum_link'); function function_get_pagenum_link($result) { $result= str_replace ("wp-admin/admin-ajax.php" , "", $result); return $result ; }Но опять же почему так сделано ? . Нету нормально плагина или кода который нормально формировала ссылку на пагинация . А не через "костыли" так скажем , c вырезанием /wp-admin/admin-ajax.php.