2013-09-25 4 views
1

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

У меня есть список, который заполняется, и ссылки появляются, но когда я нажимаю на предыдущие или следующие ссылки, я просто получаю те же 3 сообщения, что и раньше. Я вижу изменения URL (/ blog/page/2), но показанные сообщения всегда являются тремя последними.

ОБНОВЛЕНИЕ. После того, как я очень расстроился, я решил вернуться к основам. Следующий фрагмент - это единственный код, который у меня был в моем шаблоне, просто чтобы изолировать цикл в основном, и этот STILL не исправил его. Все, что я получаю, - это сингл-сообщение на странице, но если я вручную набираю/page/2 в конце URL-адреса, он выводит меня на страницу 2 с другим сообщением. Тем не менее, единственная ссылка, которую я вижу в области разбивки на страницы, - «Новые сообщения» (и это отображается только на стр. 2). Почему «старые» сообщения не появляются?

<?php 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$args = array(
    'orderby'  => 'post_date', 
    'order'   => 'DESC', 
    'post_type'  => 'post', 
    'post_status'  => 'publish', 
    'posts_per_page' => 1, 
    'paged'   => $paged, 
); 

$postslist = get_posts($args); 
foreach ($postslist as $post) : setup_postdata($post); 
?> 

<article> 
    <h2 class="fnt25 noBtmMarg"><a href="<?php echo get_permalink(); ?>" title="Read: <?php the_title(); ?>"><?php the_title(); ?></a></h2> 
    <div class="meta fnt18 pMarginBottom">Posted on: <?php the_date(); ?></div> 

    <div class="fnt22"><?php print_custom_field('listingDesc'); ?></div> 

    <a href="<?php echo get_permalink(); ?>" class="floatRight fnt22" title="Read the full article: <?php the_title(); ?>">Read more...</a> 
    <div class="clearfix"></div> 

</article> 
<?php endforeach; ?> 

<div class="nav-previous alignleft"><?php next_posts_link('Older posts'); ?></div> 
<div class="nav-next alignright"><?php previous_posts_link('Newer posts'); ?></div> 
+0

Доступен ли вы или манипулирует wp_query (или get_posts/get_post или объект $ post) перед этим блоком кода? Также, случайно, некоторые из сообщений, к которым вы обращаетесь к пользовательским сообщениям? – zillaofthegods

+0

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

+0

Хорошо, я предполагаю, что у вас есть больше, чем всего 3 сообщения (которые не являются таковыми). Возможно, это предположение из Wordpress? Msgstr "Эта функция не работает (сбой не работает), если в вашем php.ini включен mysql.trace_mode. Если вы не можете отредактировать этот файл, попробуйте добавить ini_set ('mysql.trace_mode', 0) в функции functions.php вашей темы ». Альтернативно, что происходит, когда вы не предлагаете определенный post_type, работает ли он (показывая как сообщения, так и пользовательские сообщения)? – zillaofthegods

ответ

1

Хорошо. Проведя немного исследований самостоятельно, кажется, что query_posts() не лучший для этого типа сценария. Используйте get_posts(), читайте на нем немного.

Хороший пример (EDIT: лучше описание):

<?php 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$args = array(
    'orderby'  => 'post_date', 
    'order'   => 'DESC', 
    'post_type'  => 'post', 
    'post_status'  => 'publish', 
    'posts_per_page' => 3, 
    'paged'   => $paged, 
); 

$postslist = get_posts($args); 
foreach ($postslist as $post) : setup_postdata($post); 
?> 
+0

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

+0

Нет, на самом деле все, что он делает, это перечисление одной ссылки, которая сама привязана. Независимо от того, связано ли это с тем, что там нет (фактически просто #), или если в запросе есть что-то странное, что делает ссылку на текущий шаблон, а не на сообщения .... – Kev

+0

извините, что сразу несколько вещей. Я переформатировал код таким образом, который имеет больше смысла и гораздо более кратким (и вы обрядом, я полностью забыл атрибут «paged». – zillaofthegods

0
$paged = get_query_var('paged') ? get_query_var('paged') : 1; // setup pagination 

    $the_query = new WP_Query(array( 
     'post_type' => 'post', 
     'paged' => $paged, 
     'post_status' => 'publish', 
     'orderby' => 'date', 
     'order' => 'DESC', 
     'posts_per_page' => 1) 
    ); 

    while ($the_query->have_posts()) : $the_query->the_post(); 
     echo '<div>' . get_the_title() . '</div>'; 
       the_content(); 
    endwhile; 


    echo '<nav>'; 
    echo '<div class="nav-previous alignleft">'.get_next_posts_link('Older posts', $the_query->max_num_pages).'</div>'; //Older Link using max_num_pages 
    echo '<div class="nav-next alignright">'.get_previous_posts_link('Newer posts', $the_query->max_num_pages).'</div>'; //Newer Link using max_num_pages 
    echo "</nav>"; 


    wp_reset_postdata(); // Rest Data 

ли вы смотрите выше код?

Смежные вопросы