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


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

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

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

Любые идеи,

Чудесный

 19
Author: Robin I Knight, 2011-03-18

4 answers

Когда 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()).

 27
Author: EAMann, 2011-03-18 14:01:54

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

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; ?>

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

 8
Author: t31os, 2011-04-16 10:18:04

Как упоминалось выше - более простой способ получить максимальное количество страниц с помощью:

global $wp_query

$wp_query->max_num_pages

 0
Author: Alex Standiford, 2019-02-19 23:58:18

Один из вариантов, который работает на всех страницах моего архива, таков:

$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
Author: andiOak, 2019-11-24 06:17:31