Я не могу заставить работать пагинацию в запросе WP - PullRequest
0 голосов
/ 23 сентября 2019

Вот как выглядит мой текущий пост-запрос WordPress:

<?php
    $new_loop = new WP_Query( array(
    'post_type' => 'news',
    'posts_per_page' => 5 
    ) );
?>

Я хочу добавить к нему следующую нумерацию страниц:

<?php the_posts_pagination( array(
    'mid_size' => 2,
    'prev_text' => __( 'Prev'),
    'next_text' => __( 'Next'),
) ); ?>

Я гуглил для разных решений.Повсюду говорится, что нужно добавить «paged» в массив, например:

<?php
    $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;**
    $new_loop = new WP_Query( array(
    'post_type' => 'news',
    'paged' => $paged,**
    'posts_per_page' => 5 // put number of posts that you'd like to display
    ) );
?> 

Однако это не работает.Как я могу заставить нумерацию страниц работать в пользовательском пост-запросе WordPress?

1 Ответ

0 голосов
/ 23 сентября 2019

Я думаю, что вам не хватает аргумента: 'current' => max( 1, get_query_var( 'paged' ) )

После запуска цикла вы можете добавить эту функцию в вашу тему (functions.php или в другом месте):

if ( ! function_exists( 'custom_pagination' ) ) {

    function custom_pagination( $args = array(), $class = 'pagination' ) {

        if ( $GLOBALS['wp_query']->max_num_pages <= 1 ) {
            return;
        }

        $args = wp_parse_args(
            $args,
            array(
                'mid_size'           => 3,
                'prev_next'          => true,
                'prev_text'          => __( 'Previous', 'theme' ),
                'next_text'          => __( 'Next', 'theme' ),
                'screen_reader_text' => __( 'Posts navigation', 'theme' ),
                'type'               => 'array',
                'current'            => max( 1, get_query_var( 'paged' ) ),
                //'total'           => $the_query->max_num_pages,
            )
        );

        $links = paginate_links( $args );

        ?>

        <nav aria-label="<?php echo $args['screen_reader_text']; ?>">

            <ul class="pagination">

                <?php
                foreach ( $links as $key => $link ) {
                    ?>
                    <li class="page-item <?php echo strpos( $link, 'current' ) ? 'active' : ''; ?>">
                        <?php echo str_replace( 'page-numbers', 'page-link', $link ); ?>
                    </li>
                    <?php
                }
                ?>

            </ul>

        </nav>

        <?php
    }
}

Затем, наконец, вызовите его в любом шаблоне, который вам нужен:

custom_pagination();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...