abosami
  • 0
Новичок

Пропустить 5 последних сообщений при просмотре страниц?

  • 0

На index.php странице мне нужно пропустить 5 постов (последние 5 постов в блоге).

Я использую плагин WP-Paginate, но все страницы отображаются одинаково. Я использую offset=5, это мой код:

<?php  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;?>
<?php   $additional_loop = new WP_Query("offset=5&paged=".$paged);  
        if ($additional_loop->have_posts()) :

        while ($additional_loop->have_posts()) : $additional_loop->the_post();
        the_title();?><br/>
        <?php the_content();?>
        <?php endwhile;endif;?>
        <?php if(function_exists('wp_paginate')) {
    wp_paginate('range=4&anchor=2&nextpage=Next&previouspage=Previous');
} ?>
Share
  1. Попробуйте этот: github.com/franz-josef-kaiser/Easy-Pagination-Damon Его можно использовать как плагин, но он предназначен для того, чтобы показать вам, как можно выполнить разбиение на страницы в wp.

    • 0
    • Вы не можете использовать смещение с параметром paged, система пейджинга устанавливает смещение, когда вы устанавливаете смещение, вы искажаете пейджинг. Если вы используете смещение, вы должны создать свою собственную систему подкачки (т.е. создать ссылки для подкачки самостоятельно).

      • 0
  2. Вы можете указать либо paged для простой нумерации страниц, либо offset если вы хотите сделать что-то особенное. Вычислить смещение самостоятельно несложно: просто умножьте текущий номер страницы (минус два) на количество сообщений на странице и добавьте начальное смещение:

    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $posts_per_page = get_option( 'posts_per_page' ),
    $additional_loop = new WP_Query( array(
        'offset' => ( $paged - 2 ) * $posts_per_page + 5,
    ) );
    

    Я вижу, вы используете wp_paginate(), но эта функция не знает, что вы используете дополнительный запрос, и будет считывать глобальный $wp_query объект, чтобы получить текущую страницу и общее количество страниц, если только вы сами не передадите эти значения:

    wp_paginate( array(
        'range' => 4,
        'anchor' => 2,
        'nextpage' => 'Next',
        'previouspage' => 'Previous',
        'page' => $paged,
        'pages' => intval( ceil( $additional_loop->found_posts / $posts_per_page ) ),
    ) );
    

    Это дополнительный цикл, значит, на этой странице все еще есть «обычный» цикл? Следите за тем, чтобы это не запутало нумерацию страниц, потому что WordPress также попытается разбить этот цикл на страницы и вернуть 404, если он исчерпан — что может быть до того, как вы дойдете до последней страницы. Пробуйте делать пагинацию только в основном цикле, с pre_get_posts хуком.

    • 0

Оставить ответ

You must login to add an answer.