robiniknight
  • 0
Новичок

Получить номер текущей страницы

  • 0

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

<?php echo '(Page '.$page.' of '.$numpages.')'; ?>

и это просто говорит страница 1 из 1 на каждой странице.

Есть идеи,

Чудесный

Share
  1. Когда WordPress использует разбиение на страницы, как это, есть переменная запроса $paged, на которую он нажимает. Итак, страница 1 $paged=1 и страница 15 $paged=15 .

    Вы можете получить значение этой переменной с помощью следующего кода:

    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    

    Получить общее количество страниц немного сложнее. Сначала вы должны подсчитать все сообщения в базе данных. Затем отфильтруйте, какие сообщения публикуются (а не черновики, запланированные, мусор и т. д.). Затем вам нужно разделить это количество на количество сообщений, которые вы ожидаете увидеть на каждой странице:

    $total_post_count = wp_count_posts();
    $published_post_count = $total_post_count->publish;
    $total_pages = ceil( $published_post_count / $posts_per_page );
    

    Я еще не проверял это, но вам может понадобиться получить $posts_per_page тот же способ, которым вы выбрали $paged (используя get_query_var() ).

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

    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 ' . $page . ' of ' . $pages;
    }
    

    ПРИМЕЧАНИЕ. Код может находиться в вашем файле функций.

    Просто вызовите функцию, в которой вы хотите отобразить сообщение «Страница x из y», например.

    <?php current_paged(); ?>
    

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

    Пример несуществующего запроса:

    $fred = new WP_Query;
    $fred->query();
    if( $fred->have_posts() ) 
    ... etc..
    

    Получение текущей страницы для пользовательского запроса с помощью функции, опубликованной ранее.

    <?php current_paged( 'fred' ); ?>
    

    Если вы хотите просто полностью забыть о поддержке пользовательских запросов и ищете однострочный, то это должно сделать это.

    <?php echo 'Page '. ( get_query_var('paged') ? get_query_var('paged') : 1 ) . ' of ' . $wp_query->max_num_pages; ?>
    

    Надеюсь, это поможет.. 🙂

    • 0
  3. Как упоминалось выше, более простой способ получить максимальное количество страниц:

    global $wp_query
    
    $wp_query->max_num_pages
    
    
    • 0
  4. Один из вариантов, который работает на всех страницах моего архива, таков:

    $paged_maxnum = $GLOBALS['wp_query']->max_num_pages;
    
    if ( $paged_maxnum > 1 ) {
    
        $paged_current_page = get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : 1;
        $title_page_nrs = 'page nr ' . $paged_current_page . ' of ' . $paged_maxnum;
    
        echo '<title>' . get_the_archive_title( '', false ) . ' - ' . $title_page_nrs . ' | Your Website Name</title>';
    
    } else {
    
        echo '<title>' . get_the_archive_title( '', false ) . ' | Your Website Name</title>'; 
    
    }
    

    Сначала запросите, есть ли в этом более одной страницы wp_query, затем соедините заголовок с текущей страницей через $paged_current_page и общее количество страниц с помощью $title_page_nrs . Наконец echo это. Если выше 1 страницы сначала, то else если не постранично. Это входит в мой archive.php или шаблоны для этого типа. Он производит:

    <title>Taxonomy title - page nr 1 of 4 | Your Website Name</title>

    или

    <title>Taxonomy title | Your Website Name</title>

    • 0
  5. Из документации WordPress paginate_links( string|array $args = '' ) :

    <?php
    global $wp_query;
     
    $big = 999999999; // need an unlikely integer
     
    echo paginate_links( array(
        'base'    => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
        'format'  => '?paged=%#%',
        'current' => max( 1, get_query_var('paged') ),
        'total'   => $wp_query->max_num_pages
    ) );
    ?>
    

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

    • 0

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

You must login to add an answer.