Wordpress: помощь с posts_nav_link () - PullRequest
2 голосов
/ 07 апреля 2010

У меня есть страница с множеством элементов, извлеченных из сообщений.

У меня настроено отображение только 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 }   }

Ответы [ 2 ]

2 голосов
/ 07 апреля 2010

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

 <?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()) : ?>
1 голос
/ 07 апреля 2010

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

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

В качестве альтернативы, если вы хотите включить только переменную "page", добавьте ее с помощью $paged:

query_posts('tag=shop&orderby=title&order=ASC&posts_per_page=10&paged='.$paged);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...