WordPress wp_query не показывает некоторые сообщения - PullRequest
0 голосов
/ 01 марта 2019

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

Наконец, когда я пытаюсь использовать нумерацию страниц, это не работает.

Вотмой код:

<?php
        // Protect against arbitrary paged values
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;


        $args = array(
            'category__in' => array( 11 ),
            'category__not_in' => '',
            'posts_per_page' => 5,
            'post_type' => 'post',
            'post_status'=>'publish',

            'paged' => $paged,
        );

        $the_query = new WP_Query($args);
        ?>

        <?php if ( $the_query->have_posts() ) : ?>

        <?php while ( $the_query->have_posts() ) : $the_query->the_post();
        $the_query->the_post();
        // Post content goes here...
        // 
        echo '
        <h3 class="tituliNota">
        <a href="'.get_permalink().'" class="noteTitle">
            <b>'.the_title( ' ', ' ', false ).'</b></a></h3>';


get_the_category();
wp_reset_postdata();
endwhile; ?>

<div class="pagination">
    <?php
    echo paginate_links( array(
        'format'  => 'page/%#%',
        'current' => $paged,
        'total'   => $the_query->max_num_pages,
        'mid_size'        => 5,
        'prev_text'       => __('&laquo; Prev Page'),
        'next_text'       => __('Next Page &raquo;')
    ) );
    ?>
</div>

1 Ответ

0 голосов
/ 01 марта 2019

Основной запрос выполняется до загрузки шаблона, и WordPress решает, какой шаблон загрузить, основываясь на результатах этого запроса.

Вы говорите, что значение posts_per_page по умолчанию установлено на 5, а есть 2 или 3постов в этой категории, насколько известно WordPress, нет страницы 2. Ваш пользовательский запрос, который вы запускаете в шаблоне с другими настройками постов на странице, не связан с основным запросом.

Решение состоит в том,внести коррективы в основной запрос до загрузки шаблона с помощью действия pre_get_posts.Это будет в файле functions.php вашей темы

function category_posts_per_page( $query ) {
    if ( !is_admin()
        && $query->is_category()
        && $query->is_main_query() ) {
        $query->set( 'posts_per_page', 5 );
    }
}
add_action( 'pre_get_posts', 'category_posts_per_page' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...