Здравствуйте. Передо мной стоит задача сделать список рубрик, под рубриками выводятся все записи в количестве 9 штук, если больше, то нужна цифровая пагинация. При нажатии на ссылку рубрики происходит сортировка записей через и меняется соответственно пагинация для уже нового списка. Изначально была реализована Ajax сортировка, но в дальнейшем при добавлении пагинации, она не учитывает уже отсортированные записи, и не удается почему то таким образом вывести изначально на страницу только 9 записей, выводятся сразу все. Может кто подсказать как можно сделать, желательно с примером. А то пока wordpress на низком уровне.
blog.php
<form action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" method="POST" id="filter">
<section class="portfolio-banner">
<div class="container">
<h2>Блог компании</h2>
<span>Думаем и размышляем</span>
<ul class="p-list">
<?php
if( $terms = get_terms( 'category', 'orderby=name' ) ) :
foreach ($terms as $term) :
echo '<li data-termid="'. $term->term_id .'">' . $term->name . '</li>';
endforeach;
endif;
?>
</ul>
</div>
</section>
<section class="may blog">
<div class="container">
<div class="projects" id="response">
<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array('posts_per_page' => 9,
'paged' => $paged);
$custom_query = new WP_Query( $args );
while($custom_query->have_posts()) :
$custom_query->the_post();
?>
<div class="project">
<a href="<?php echo get_permalink(); ?>"><div class="project-img" style="background: url('<?php echo get_the_post_thumbnail_url(); ?>')"></div></a>
<p class="may-title"><?php the_title(); ?></p>
<p class="may-annotice"><?php the_excerpt(); ?></p>
<p class="post-date"><?php the_date('d/m/Y'); ?></p>
</div>
<?php endwhile; ?>
</div>
<?php if (function_exists("pagination")) {
pagination($custom_query->max_num_pages);
} ?>
</div>
</section>
<input type="hidden" name="action" value="myfilter">
functions.php
function pagination($pages = '', $range = 4)
{
$showitems = ($range * 2)+1;
global $paged;
if(empty($paged)) $paged = 1;
if($pages == '')
{
global $wp_query;
$pages = $wp_query->max_num_pages;
if(!$pages)
{
$pages = 1;
}
}
if(1 != $pages)
{
echo "<div class=\"pagination\"><span>Page ".$paged." of ".$pages."</span>";
if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>« First</a>";
if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>‹ Previous</a>";
for ($i=1; $i <= $pages; $i++)
{
if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
{
echo ($paged == $i)? "<span class=\"current\">".$i."</span>":"<a href='".get_pagenum_link($i)."' class=\"inactive\">".$i."</a>";
}
}
if ($paged < $pages && $showitems < $pages) echo "<a href=\"".get_pagenum_link($paged + 1)."\">Next ›</a>";
if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>Last »</a>";
echo "</div>\n";
}
}
function true_filter_function(){
// для таксономий
if(!empty($_POST['foliocat'])) :
$args['tax_query'][] = array(
'taxonomy' => 'folio_cat',
'field' => 'id',
'terms' => $_POST['foliocat']
);
endif;
if(!empty($_POST['postcat'])) :
$args['tax_query'][] = array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['postcat']
);
endif;
$query = new WP_Query( $args );
if(!empty($_POST['foliocat'])) {
if( $query->have_posts() ) :
while( $query->have_posts() ): $query->the_post();
echo '<div class="project"><a href="'.get_the_permalink(get_the_ID()).'"><div class="project-img" style="background:url('.get_the_post_thumbnail_url().')"></div></a>';
echo '<span>'. get_the_title() .'</span>';
echo '<p>'. get_the_excerpt() .'</p>';
echo '<p class="post-date">'. get_the_date('d/m/Y') .'</p></div>';
endwhile;
wp_reset_postdata();
else :
echo 'No posts found';
endif;
}
if(!empty($_POST['postcat'])) {
if( $query->have_posts() ) :
while( $query->have_posts() ): $query->the_post();
echo '<div class="project"><a href="'.get_the_permalink(get_the_ID()).'"><div class="project-img" style="background:url('.get_the_post_thumbnail_url().')"></div></a>';
echo '<span>'. get_the_title() .'</span>';
echo '<p>'. get_the_excerpt() .'</p>';
echo '<p class="post-date">'. get_the_date('d/m/Y') .'</p></div>';
endwhile;
wp_reset_postdata();
else :
echo 'No posts found';
endif;
}
die();
}
add_action('wp_ajax_myfilter', 'true_filter_function');
add_action('wp_ajax_nopriv_myfilter', 'true_filter_function');
main.js
$('#filter .p-list li').click(function(){
var that = this;
var filter = $("#filter");
var datas = {
action: 'myfilter'
};
if($('section').is('.may.blog')){
datas['postcat'] = jQuery(that).data("termid");
}else{
datas['foliocat'] = jQuery(that).data("termid");
}
console.log(datas);
$.ajax({
url:filter.attr('action'),
data: datas, // данные
type:filter.attr('method'), // тип запроса
beforeSend:function(xhr){
filter.find('#response').text('Загружаю...'); // изменяем текст кнопки
},
success:function(data){
$('#response').attr("data-curcat", jQuery(that).data("termid"));
$('#response').html(data);
}
});
});
Что я делаю не так?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
ЗдравствуйтеЕсть пару очень старых блогов, которые необходимо перенести на новый хост
Есть надобность перенести сайт на локалку чтобы поработать с фронтомСразу скажу сайт я не делал, и в Yii не разбираюсь
Непонятно, то ли баг, то ли работают эти методы по непонятной логике