Показать счётчик страниц для пагинации

Вопрос или проблема

У меня сейчас настроена простая пагинация, которая отображает текст «старее» и «новее». Если один из текстов не нужен, он отображает «неактивную» версию, чтобы текст не пропадал.

<?php if( get_next_posts_link() ) :?>
                <div id="next-post-link" class="post-pag flL"><?php next_posts_link( '<i class="icon-left-open-big"></i><span>Старее</span>' );?></div>
            <?php else: ?>
                <div id="next-post-link" class="post-pag inactive flL"><i class="icon-left-open-big"></i><span>Старее</span></div>
            <?php endif; ?>

            <?php if( get_previous_posts_link() ) :?>
                <div id="prev-post-link" class="post-pag flR"><?php previous_posts_link( '<span>Новее</span><i class="icon-right-open-big"></i>' );?></div>
            <?php else: ?>
                <div id="prev-post-link" class="post-pag inactive flR"><span>Новее</span><i class="icon-right-open-big"></i></div>
            <?php endif; ?>

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

Это изображение должно лучше показать, что я имею в виду:
введите описание изображения здесь

Вот мой запрос на данный момент:

$current_page = get_query_var( 'paged' );
    $pages = $wp_query->max_num_pages;

    $args = array(
        'paged'=> $paged,
        'posts_per_page' => '2'
    );

    $wp_query = new WP_Query($args); 

    if ($wp_query->have_posts()) : 

Этот пост на форумах WordPress должен предоставить немного помощи. Он использует функцию paginate_links для генерации вывода.

Для тех, кто испытывает трудности с этим, есть ответ здесь на SO. Поскольку я собираюсь использовать это в нескольких местах, я использовал функцию-ответ.

Добавьте в файл functions.php:

function current_paged( $var="" ) {
if( empty( $var ) ) {
    global $wp_query;
    if( !isset( $wp_query->max_num_pages ) )
        return;
    $pages = $wp_query->max_num_pages;
}
else {
    global $$var;
        if( !is_a( $$var, 'WP_Query' ) )
            return;
    if( !isset( $$var->max_num_pages ) || !isset( $$var ) )
        return;
    $pages = absint( $$var->max_num_pages );
}
if( $pages < 1 )
    return;
$page = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
echo 'Страница ' . $page . ' из ' . $pages;
}

Вызовите функцию на странице, на которой хотите:

<?php current_paged(); ?>

Ответ или решение

Создание счетчика страниц для постраничной навигации — это полезная функция, которая может улучшить пользовательский опыт на вашем сайте, облегчая пользователям навигацию между различными страницами контента. В этом тексте мы рассмотрим, как можно реализовать счетчик текущей страницы и общего числа страниц при использовании WordPress.

Шаг 1: Получение текущей страницы и общего количества страниц

Для начала нам нужно получить номер текущей страницы и общее количество страниц. Это можно сделать с помощью глобальной переменной $wp_query. Вот фрагмент кода, который вы можете использовать:

$current_page = get_query_var('paged') ? get_query_var('paged') : 1;
$total_pages = $wp_query->max_num_pages;

Шаг 2: Создание функции для вывода информации о текущей странице

Мы создадим функцию, которая будет выводить сообщение с номером текущей страницы и общим количеством страниц. Это позволит гибко использовать функцию в разных местах вашего сайта, минимизируя дублирование кода. Вставьте следующий код в файл functions.php вашей темы:

function current_paged($var = "") {
    if (empty($var)) {
        global $wp_query;
        if (!isset($wp_query->max_num_pages)) {
            return;
        }
        $total_pages = $wp_query->max_num_pages;
    } else {
        global $$var;
        if (!is_a($$var, 'WP_Query')) {
            return;
        }
        if (!isset($$var->max_num_pages) || !isset($$var)) {
            return;
        }
        $total_pages = absint($$var->max_num_pages);
    }
    if ($total_pages < 1) {
        return;
    }
    $current_page = get_query_var('paged') ? get_query_var('paged') : 1;
    echo 'Страница ' . $current_page . ' из ' . $total_pages;
}

Шаг 3: Вставка вызова функции в ваш шаблон

Теперь вы можете вызвать эту функцию в любом месте вашего шаблона, где вы хотите отобразить счетчик страниц. Вставьте следующий код в нужное место вашего шаблона:

<?php current_paged(); ?>

Шаг 4: Пример всей реализации с пагинацией

Теперь давайте объединим это с вашим существующим кодом пагинации. Вот пример, как это может выглядеть:

<?php
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
$args = array(
    'paged' => $paged,
    'posts_per_page' => 2
);
$wp_query = new WP_Query($args);

if ($wp_query->have_posts()) :
    while ($wp_query->have_posts()) : $wp_query->the_post();
        // Ваш код для отображения постов здесь
    endwhile;

    echo '<div class="pagination">';
    if (get_previous_posts_link()) {
        echo '<div id="prev-post-link" class="post-pag flR">' . previous_posts_link('<span>Новее</span><i class="icon-right-open-big"></i>') . '</div>';
    } else {
        echo '<div id="prev-post-link" class="post-pag inactive flR"><span>Новее</span><i class="icon-right-open-big"></i></div>';
    }

    if (get_next_posts_link()) {
        echo '<div id="next-post-link" class="post-pag flL">' . next_posts_link('<i class="icon-left-open-big"></i><span>Старее</span>') . '</div>';
    } else {
        echo '<div id="next-post-link" class="post-pag inactive flL"><i class="icon-left-open-big"></i><span>Старее</span></div>';
    }

    // Вывод текущей страницы
    current_paged();
    echo '</div>';

endif;

wp_reset_postdata();
?>

Заключение

Настройка счетчика страниц на вашем сайте WordPress позволит вашим пользователям лучше ориентироваться в навигации между записями. Следуя приведенным выше шагам, вы сможете легко добавить эту функциональность в свою тему. Не забудьте проверить, чтобы все работало правильно, и, при необходимости, адаптируйте стили для кастомизации внешнего вида, чтобы они соответствовали вашему дизайну.

Если у вас возникнут вопросы или потребуется дополнительная помощь, не стесняйтесь обращаться за поддержкой в сообщество WordPress.

Оцените материал
Добавить комментарий

Капча загружается...