2010-04-06 4 views
2

У меня есть страница со многими пунктами, снятыми с сообщений.Wordpress: help with posts_nav_link()

У меня есть возможность отображать только 10 сообщений за раз, но моя предыдущая/следующая кнопка фактически не отображает следующие или предыдущие сообщения - она ​​просто показывает одни и те же сообщения.

Вот функция, я писал:

function add_shop() { 
    if (is_page('shop') || is_page('7')) { ?> 
    <div id="content"> 
    <div class="post_box"> 
     <div id="column_1"> 
     <div id="shop_wrapper"> 
      <?php query_posts('tag=shop&orderby=title&order=ASC&posts_per_page=10'); 

if (have_posts()) : ?> 
      <?php while (have_posts()) : the_post(); ?> 
      <div class="shop_item"> <a href="<?php getCustomField('link_to_project_page'); ?>"><img src="<?php getCustomField('shop_thumbnail_image'); ?>" alt='photo of <?php getCustomField('title'); ?>' class="shop_thumb" /></a> 
      <div class="shop_content"> 
       <h4><a href="<?php getCustomField('link_to_project_page'); ?>"> 
       <?php getCustomField('title'); ?> 
       </a></h4> 
       <?php getCustomField('duration'); ?> 
       <?php getCustomField('paypal_code'); ?> 
      </div> 
      </div> 
      <?php endwhile; ?> 
     </div> 
     <?php posts_nav_link(); ?> 
     </div> 
     <?php else : ?> 
     <h2>Not Found</h2> 
     <p>Sorry, but you are looking for something that isn't here.</p> 
     <?php include (TEMPLATEPATH . "/searchform.php"); ?> 
     <?php endif; ?> 
    </div> 
    </div> 
    <div id="sidebars"> 
    <div id="sidebar_1" class="sidebar"> 
     <ul class="sidebar_list"> 
     <li class="widget"> 
      <div class="widget_box"> 
      <?php dynamic_sidebar(5); ?> 
      </div> 
     </li> 
     </ul> 
    </div> 
    </div> 
    <?php } } 

ответ

1

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

query_posts($query_string.'&tag=shop&orderby=title&order=ASC&posts_per_page=10'); 

В качестве альтернативы, если вы хотите включить «страницу» переменную, включите его с $paged:

query_posts('tag=shop&orderby=title&order=ASC&posts_per_page=10&paged='.$paged); 
+0

Я просто попытался, что ... Я думаю, что это кло ser, но он все еще не работает. Возможно, мне нужно установить смещение ... но не знаете, как это сделать? – redconservatory

+0

Хмм, '$ paged' должен представлять смещение. Например, если вы находитесь на странице 4, значение '$ paged' будет равно 4. Оно должно использовать это в сочетании с' posts_per_page' для определения смещения. Что вы получаете сейчас, какие должности? –

2

Исходя из вышесказанного помощь, я просто только получил это работает с этим:

<?php $page = (get_query_var('paged')) ? get_query_var('paged') : 1; 
      if ($page == 1) { 
       query_posts('tag=shop&orderby=title&order=ASC&posts_per_page=10&paged=$page'); 
     } else { 
      $numposts = get_option('posts_per_page'); 

      // work out offset 
      $offset = (($page -1) * $numposts); // i.e. page 2 - 1 = 1 * 10 (10 for the number of posts) 

      query_posts("tag=shop&orderby=title&order=ASC&offset=$offset&paged=$page&showposts=$numposts"); 
      } 



if (have_posts()) : ?>