Поддержка Проблемы и решения Не работает WordPress пагинация.

  • Пытаюсь сделать пагинацию используя готовый код (код) , вроде всё получаеться, и пагинацию видно и страницы переключаются, и адресная строка меняеться. А сами посты не меняются. Вне зависимости от страницы показывает последний пост.
    Использую локальный сервер Wamp.
    Видел похожие вопросы на форуме, но не нашёл там внятного ответа, query_posts не использую!
    Подскажите, как исправить.
    Заранее благодарен!

    Код вывода постов:

    <article id="news_posts">
            <?php if ( have_posts() ) : ?>
            <?php $args = array('category' => 4, 'posts_per_page' => 1);
            $myposts = get_posts( $args );
            foreach( $myposts as $post ){ setup_postdata($post); ?>
              <div class="row new_article">
                <div class="col-xs-12 col-sm-4 col-xl-3 no-gutters">
                  <?php if ( has_post_thumbnail() ) : ?>
                    <a href="<?php the_permalink( $post ); ?>"><img class="post_thumbnails media-object" src="<?php the_post_thumbnail_url(); ?>" alt="Olaines 1.vidusskola - jaunumi"></a>
                  <?php endif; ?>
                </div>
                <div class="col-xs-10 col-xs-push-1 col-sm-8 col-sm-push-0 col-xl-9">
                  <h1 class="post_heading"><a href="<?php the_permalink( $post ); ?>"><?php the_title();?></a></h1>
                  </br>
                  <div class="excerpt">
                    <?php the_excerpt(); ?>
                  </div>
                  <a href="<?php the_permalink( $post ); ?>"><button type="button" class="btn btn-primary">Lasīt tālāk <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span></button></a>
                </div>
              </div>
            <?php
            }
            wp_reset_postdata();
            else: ?>
              <p>Piedodied, netika atrasti ieraksti, kas atbilstu jūsu kritērijiem</p>
            <?php endif; ?>
          </article>

    Код пагинации из index.php:
    <?php wpo1vsk_pagination(); ?>

    Код в functions.php:

    /* WordPress Bootstrap Pagination*/
    function wpo1vsk_pagination( $args = array() ) {
    
        $defaults = array(
            'range'           => 4,
            'custom_query'    => FALSE,
            'previous_string' => __( 'Iepriekšējā', 'text-domain' ),
            'next_string'     => __( 'Nākošā', 'text-domain' ),
            'before_output'   => '<div class="page-numbers"><ul class="pagination">',
            'after_output'    => '</ul></div>'
        );
    
        $args = wp_parse_args(
            $args,
            apply_filters( 'wpo1vsk_pagination', $defaults )
        );
    
        $args['range'] = (int) $args['range'] - 1;
        if ( !$args['custom_query'] )
            $args['custom_query'] = @$GLOBALS['wp_query'];
        $count = (int) $args['custom_query']->max_num_pages;
        $page  = intval( get_query_var( 'paged' ) );
        $ceil  = ceil( $args['range'] / 2 );
    
        if ( $count <= 1 )
            return FALSE;
    
        if ( !$page )
            $page = 1;
    
        if ( $count > $args['range'] ) {
            if ( $page <= $args['range'] ) {
                $min = 1;
                $max = $args['range'] + 1;
            } elseif ( $page >= ($count - $ceil) ) {
                $min = $count - $args['range'];
                $max = $count;
            } elseif ( $page >= $args['range'] && $page < ($count - $ceil) ) {
                $min = $page - $ceil;
                $max = $page + $ceil;
            }
        } else {
            $min = 1;
            $max = $count;
        }
    
        $echo = '';
        $previous = intval($page) - 1;
        $previous = esc_attr( get_pagenum_link($previous) );
    
        $firstpage = esc_attr( get_pagenum_link(1) );
        if ( $firstpage && (1 != $page) )
            $echo .= '<li class="previous"><a href="' . $firstpage . '" class="page-link">' . __( 'Pirmā', 'text-domain' ) . '</a></li>';
        if ( $previous && (1 != $page) )
            $echo .= '<li><a href="' . $previous . '" class="page-link" title="' . __( 'iepreikšējā', 'text-domain') . '">' . $args['previous_string'] . '</a></li>';
    
        if ( !empty($min) && !empty($max) ) {
            for( $i = $min; $i <= $max; $i++ ) {
                if ($page == $i) {
                    $echo .= '<li class="active"><span class="page-link current">' . str_pad( (int)$i, 2, '0', STR_PAD_LEFT ) . '</span></li>';
                } else {
                    $echo .= sprintf( '<li><a href="%s" class="page-link">%002d</a></li>', esc_attr( get_pagenum_link($i) ), $i );
                }
            }
        }
    
        $next = intval($page) + 1;
        $next = esc_attr( get_pagenum_link($next) );
        if ($next && ($count != $page) )
            $echo .= '<li><a href="' . $next . '" class="page-link" title="' . __( 'next', 'text-domain') . '">' . $args['next_string'] . '</a></li>';
    
        $lastpage = esc_attr( get_pagenum_link($count) );
        if ( $lastpage ) {
            $echo .= '<li class="next"><a href="' . $lastpage . '" class="page-link">' . __( 'Pēdējā', 'text-domain' ) . '</a></li>';
        }
        if ( isset($echo) )
            echo $args['before_output'] . $echo . $args['after_output'];
    }
Просмотр 3 ответов — с 1 по 3 (всего 3)
  • вы в курсе, что уже несколько лет в wordpress есть собственные функции пагинации и использовать кустарный код больше необязательно?

    @flector Большое вам спасибо за совет! Но даже используя собственную функцию wordpress. Происходит тоже самое. Я подозреваю, что проблема в коде вывода данных. Хотелось бы услышать совет.

    Нашёл решение сам. Проблема и вправду была в коде вывода постов а не в пагинации. По не известной для меня причине код который я писал в проблеме не работает, но с этим всё в порядке: `<article id=»news_posts»>
    <?php if ( have_posts() ) : ?>
    <?php while (have_posts() ) : the_post(); ?>
    <div class=»row new_article»>
    <div class=»col-xs-12 col-sm-4 col-xl-3 no-gutters»>
    <?php if ( has_post_thumbnail() ) : ?>
    <a href=»<?php the_permalink( $post ); ?>»><img class=»post_thumbnails media-object» src=»<?php the_post_thumbnail_url(); ?>» alt=»Olaines 1.vidusskola — jaunumi»></a>
    <?php endif; ?>
    </div>
    <div class=»col-xs-10 col-xs-push-1 col-sm-8 col-sm-push-0 col-xl-9″>
    <h1 class=»post_heading»><a href=»<?php the_permalink( $post ); ?>»><?php the_title();?></a></h1>
    </br>
    <div class=»excerpt»>
    <?php the_excerpt(); ?>
    </div>
    <a href=»<?php the_permalink( $post ); ?>»><button type=»button» class=»btn btn-primary»><?php echo get_theme_mod(‘main_readmore_button’); ?></button></a>
    </div>
    </div>
    <?php endwhile; ?>
    <?php endif; ?>
    </article>`

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «Не работает WordPress пагинация.» закрыта для новых ответов.