#wordpress
#wordpress
Вопрос:
Для нового шаблона WordPress я закодировал цикл, который работает нормально. Но разбивки на страницы нет. Кто-нибудь видит, почему не отображается разбивка на страницы? Спасибо!
Мой цикл:
<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array(
'post_type' => 'post',
'numberposts' => -1,
'posts_per_page' => 9,
'paged' => $paged,
'cat' => '4'
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
?>
......
<?php
}
} else { echo 'no posts found'; }
wp_reset_postdata();
?>
И в нижней части страницы:
<?php the_posts_pagination( array( 'mid_size' => 2 ) ); ?>
Комментарии:
1. пожалуйста, удалите
'numberposts' => -1,
формуargs array
. вы можете попробовать другой способ, также описанный в моем ответе.
Ответ №1:
Пожалуйста, попробуйте это.
if ( ! function_exists( 'pagination' ) ) :
function pagination( $paged = '', $max_page = '' ){
global $wp_query
$big = 999999999; // need an unlikely integer
if( ! $paged )
$paged = get_query_var('paged');
if( ! $max_page )
$max_page = $wp_query->max_num_pages;
echo paginate_links( array(
'base' => str_replace($big, '%#%', esc_url(get_pagenum_link( $big ))),
'format' => '?paged=%#%',
'current' => max( 1, $paged ),
'total' => $max_page,
'mid_size' => 2,
'prev_text' => __('«'),
'next_text' => __('»'),
'type' => 'list'
) );
}
endif;
И шаблон цикла будет выглядеть так —
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1; $args = array(
''post_type' => 'post',
'posts_per_page' => 9,
'paged' => $paged,
'cat' => '4'
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) :
while ( $loop->have_posts() ) : $loop->the_post();
get_template_part( 'content', get_post_format() );
endwhile;
pagination($paged, $loop->max_num_pages);// Pagination Function
endif;
wp_reset_postdata();
Комментарии:
1. Спасибо, Раджат, но я получаю два уведомления, и вывод останавливается после первой статьи. Уведомления: 1) Неопределенная переменная: wp_query in … в строке 86 это было бы тогда: $ max_page = $ wp_query-> max_num_pages; 2) Попытка получить свойство ‘max_num_pages’ не-объекта в … в строке 86 (я уже упоминал эту строку) Есть идеи?
2. привет @rabox66, пожалуйста, посмотрите мой обновленный ответ. Пожалуйста, добавьте
global $wp_query
начало определенийpagination
функций и используйтеpagination
функцию типа `pagination($paged, $loop-> max_num_pages);`.