Как проверить, есть ли у WP_Query следующая страница по Wordpress? - PullRequest
0 голосов
/ 05 марта 2020

Фрагмент:

$query = new \WP_Query(
            [
                'post_type'      => 'post',
                'post_status'    => 'publish',
                'posts_per_page' => 3,
                'paged'          => $paged,
            ]
        );
$query->found_posts; // all of the posts

Только метод, который я исследовал, заключается в жестком кодировании каждый раз, когда фрагмент кода.

$posts_per_page = (int) $this->query_vars['posts_per_page'];
$has_next = $paged < ceil( (float) $query->found_posts / $posts_per_page );

Проблема заключается в дублировании кода во всех местах, которые я хочу для вычисления has_next.

Эту проблему можно решить, расширив класс WP_Query и добавив метод has_next_page. Но это решение более сложное, чем проблема.

Есть ли в Wordpress способ определить, есть ли у WP_Query следующая страница без переизобретения колеса?

1 Ответ

1 голос
/ 05 марта 2020
Did you check the following method?

In the template file

$search_args = array(

'post_type'      => 'post',
'post_status'    => 'publish',
'posts_per_page' => 3,
'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1),
);
$search_query = new WP_Query($search_args);


$big = 999999999;

$pages = paginate_links( array(
  'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
  'format' => '?paged=%#%',
  'current' => max( 1, get_query_var('paged') ),
  'total' => $search_query->max_num_pages,


) );

if($pages){
    // exists
}
...