Отображение последних 100 сообщений с нумерацией страниц 5 на страницу в WordPress с использованием WP Query - PullRequest
1 голос
/ 06 марта 2020

На моем веб-сайте более 5000 сообщений, и я пытаюсь отобразить последние 100 сообщений на отдельной странице с нумерацией страниц (5 сообщений на странице).

<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array(
'post_type' => 'post',
'posts_per_page' => 5,
'paged' => $paged
);
$wp_query = new WP_Query($args);
if( $wp_query->have_posts() ) : 
while( $wp_query->have_posts() ) : $wp_query->the_post();
get_template_part( 'template-parts/content', get_post_type() );
endwhile;
the_posts_navigation(); 
wp_reset_postdata();
else :
get_template_part( 'template-parts/content', 'none' );
endif;
?>

Я использую приведенный выше код, который отображает 5 сообщений на страницу, но я смог найти способ ограничить общее количество сообщений до 100. Я просмотрел различные статьи в блогах и различные темы SO, но не смог найти никакого решения для этого.

Было несколько тем, которые скажем, использование 'numberposts' => 100 поможет. Но это тоже не помогло. Я ищу решение, используя обычный the_posts_navigation (); так как я использую плагин Infinite Scroll для загрузки постов на свитке. Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 06 марта 2020

Надеюсь, это поможет вам.

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$args = array(
    'post_type'=>'post',
    'posts_per_page' => 5,
    'paged' => $paged,
);

$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
    while ( $loop->have_posts() ) : $loop->the_post();
        get_template_part( 'template-parts/content', get_post_type() );        
    endwhile;

    $total_pages = $loop->max_num_pages;

    if ($total_pages > 1){

        $current_page = max(1, get_query_var('paged'));

        echo paginate_links(array(
            'base' => get_pagenum_link(1) . '%_%',
            'format' => '/page/%#%',
            'current' => $current_page,
            'total' => $total_pages,
            'prev_text'    => __('< Previous'),
            'next_text'    => __('Next >'),
        ));
    }    
}
wp_reset_postdata();
?>
1 голос
/ 06 марта 2020

Вы можете рассчитать предел как:

$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array(
'post_type' => 'post',
'posts_per_page' => 5,
'paged' => $paged
);
if($args['posts_per_page'] * $args['paged'] <= 100){
    $wp_query = new WP_Query($args);
    if( $wp_query->have_posts() ) : 
    while( $wp_query->have_posts() ) : $wp_query->the_post();
    get_template_part( 'template-parts/content', get_post_type() );
    endwhile;
    the_posts_navigation(); 
    wp_reset_postdata();
    else :
    get_template_part( 'template-parts/content', 'none' );
    endif;
}
...