Функция пагенации

Wahtel

Новичок
Всем привет, есть функция пагинации:

Код:
function deco_pagination( $args ) {

    $defaults = array(
        'total'    => 1,
        'current'  => 0,
        'show_all'  => false,
        'prev_next' => true,
        'prev_text' => __( 'Предыдущая', TEXTDOMAIN ),
        'next_text' => __( 'Следующая', TEXTDOMAIN ),
        'end_size'  => 1,
        'mid_size'  => 2,
    );


    $args = wp_parse_args( $args, $defaults );

    extract( $args, EXTR_SKIP );


    $current  = (int) $current;
    $end_size = 0 < (int) $end_size ? (int) $end_size : 1;
    $mid_size = 0 <= (int) $mid_size ? (int) $mid_size : 2;
    $r        = '';
    $n        = 0;
    $dots    = false;

    $page_links = '';

    if ( $prev_next && $current && 1 < $current ) {

        $prev_num = $current - 1;
        $page_links .= '<a href="' . get_pagenum_link( $n ) . '" class="previouspostslink de_item_page_num_' . $n . '" data-page-num="' . $prev_num . '">' . $prev_text . '</a>';
    }


    for ( $n = 1; $n <= $total; $n ++ ) {
        //echo $total.'<br>';

        if ( $n == $current ) {
            $page_links .= "<span class='current-nav-item de_item_page_num_{$n}' data-page-num='$n'>$n</span>";
            $dots = true;
        } else {
            if ( $show_all || ( $n <= $end_size || ( $current && $n >= $current - $mid_size && $n <= $current + $mid_size ) || $n > $total - $end_size ) ) {

                $page_links .= "<a href='" . get_pagenum_link( $n ) . "' class='page-numbers de_item_page_num_{$n}' data-page-num='$n'>$n</a>";

                $dots = true;
            } elseif ( $dots && ! $show_all ) {
                $page_links .= '<span>' . __( '…' ) . '</span>';
                $dots = false;
            }
        }
    }

    if ( $prev_next && $current && ( $current < $total || - 1 == $total ) ) {
        $page_links .= '<a href="' . get_pagenum_link( $n - 1 ) . '" class="nextpostslink de_item_page_num_' . $n . '" data-page-num="' . ( $current + 1 ) . '">' . $next_text . '</a>';
    }

    return $page_links;
}
ниже другая функция где я вызываю ее:

Код:
function deco_load_more() {
    global $wp_query;

    //print_r( $wp_query );
    if ( $wp_query->max_num_pages == 1 ) {
        return;
    }
    ?>
    <a href="" class="download-more">
        <?php

        $str =  __( '<!--:ru-->Показать больше <!--:--><!--:ua-->Показати більше<!--:--><!--:en-->Show more<!--:-->' );
        echo $str;
        ?>
    </a>

    <div class="pagenation">
        <?php
        $page = $wp_query->query_vars['paged'];
        if ( empty( $page ) ) {
            $page = 1;
        }

        $max_pages = $wp_query->max_num_pages;


        echo deco_pagination( array(
            'total'    => $max_pages,
            'current'  => $page,
            'prev_text' => '',
            'next_text' => '',
        ) );



        ?>
    </div>

<?php
}
Функция работает нормально, она выводит кол-во страниц, и если я нажимаю на первую страницу то она меня переведет на первую, если на вторую то на вторую, и т.д., но если я буду на первой странице и нажму на стрелочку '>' для переход на следующею страницу, то она меня перекидывает на последнюю, а если с последней нажму на предыдущую то перекинет на первую, я уже перерыл всю функцию, пробовал переписать сделать по другому, но ничего не получается, мне дали эту функцию на других сайтах она работает нормально, можете глянуть подсказать почему так?
Спасибо, всех с праздниками.
 

stalxed

Новичок
Wahtel, попробуйте следующее:

  1. Код ниже
    PHP:
    if ( $prev_next && $current && 1 < $current ) {
        $prev_num = $current - 1;
        $page_links .= '<a href="' . get_pagenum_link( $n ) . '" class="previouspostslink de_item_page_num_' . $n . '" data-page-num="' . $prev_num . '">' . $prev_text . '</a>';
    }
    измените на
    PHP:
    if ( $prev_next && $current && 1 < $current ) {
        $prev_num = $current - 1;
        $page_links .= '<a href="' . get_pagenum_link( $prev_num ) . '" class="previouspostslink de_item_page_num_' . $n . '" data-page-num="' . $prev_num . '">' . $prev_text . '</a>';
    }
  2. код ниже
    PHP:
    if ( $prev_next && $current && ( $current < $total || - 1 == $total ) ) {
        $page_links .= '<a href="' . get_pagenum_link( $n - 1 ) . '" class="nextpostslink de_item_page_num_' . $n . '" data-page-num="' . ( $current + 1 ) . '">' . $next_text . '</a>';
    }
    измените на
    PHP:
    if ( $prev_next && $current && ( $current < $total || - 1 == $total ) ) {
        $page_links .= '<a href="' . get_pagenum_link( $current + 1 ) . '" class="nextpostslink de_item_page_num_' . $n . '" data-page-num="' . ( $current + 1 ) . '">' . $next_text . '</a>';
    }
Может быть поможет, нет - используйте дебагер, как раз такие операции с кучей математики и условий - самое оно для изучения дебагера.
 
Сверху