Временная разбивка на страницы не работает должным образом


Поэтому я написал следующее, чтобы создать переходный процесс:

$wp_object_i_created = new WP_Query('cat=1');
set_transient('category_one_posts', $wp_object_i_created, 60*60*1);

Хорошо, тогда я решил: "Знаешь, давай пройдемся по этому и выплюнем сообщения".

Поэтому я сделал следующее:

if(false !== get_transient('category_one_posts')){
    $posts_inside = get_transient('category_one_posts');
    if($posts_inside->have_posts()){
        while($posts_inside->have_posts()){
            $posts_inside->the_post();
            // Display your posts in some maner.
        }
        echo get_next_posts_link('« Older Entries', $max_pages);
        echo get_previous_posts_link('Newer Entries »', $max_pages);
    }
 }

Теперь нумерация страниц работает - вот в чем загвоздка - Она работает действительно неудачно. Поэтому я настроил его на отображение 5 сообщений на странице.

Поэтому, если я перейду по своей ссылке: http://localhost/wordpress/?page_id=1667, я увижу свои 5 сообщений, а внизу две ссылки - одну для старых, одну для новых. Бут. Но если Я нажимаю на кнопку "Старые записи", чтобы вернуться, поэтому моя ссылка теперь выглядит так: http://localhost/wordpress/?page_id=1667&paged=2 Я вижу, что они были на второй странице, я могу перейти на одну страницу вперед и так далее - НО сообщения те же, они никогда не обновлялись.

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

Но на временной основе разбивка на страницы не работает.

Почему?

Author: TheWebs, 2013-09-22

1 answers

Краткий ответ: Вы делаете один и тот же запрос независимо от того, на какой странице вы находитесь, но ожидаете другого результата.

Длинный ответ: Запрос должен отличаться для второй страницы, имея paged=2, поэтому ваш запрос (и переходные процессы) с разбиением на страницы должен выглядеть так:

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

if ( get_transient( 'category_one_posts-' . $paged_var ) == false ) {
    $posts_inside = new WP_Query(
        array(
             'cat' => 1,
             'paged' => $paged_var
        )
    );
    set_transient( 'category_one_posts-' . $paged_var, $posts_inside, 60*60*1 );
} else {
    $posts_inside = get_transient( 'category_one_posts-' . $paged_var );
}

if ( $posts_inside->have_posts() ) {
    while( $posts_inside->have_posts() ) {
        $posts_inside->the_post();
        // Display posts.
    }

    echo get_next_posts_link( __( 'Next', 'textdomain'), $posts_inside->max_num_pages );
    echo get_previous_posts_link( __( 'Previous', 'textdomain'), $posts_inside->max_num_pages );
}
 0
Author: Dan Ștefancu, 2013-09-23 16:10:50