如何自动隐藏和显示元素?

时间:2013-09-15 作者:hazelnut

我的博客页面末尾有一个元素,显示/列出了第2页的下一篇文章。

如果没有第二页,则此元素不显示任何内容。

我想自动隐藏元素,只要没有第二页。

一旦有第二页,该项目应自动显示。

有人知道我如何实现这样的东西吗?

以下是博客有两个站点时此元素的屏幕截图:enter image description here

这里,当第二页不存在时:enter image description here

您将看到,当第二页不存在时,这看起来不太好。

我使用以下代码实现了此功能:

                <?php if ( is_home() && !is_paged() ) {
              $post_num = get_option(\'posts_per_page\'); ?>
              <div class="next-content">
                <div class="page-header"><h3 class="article">Further articles<a href="<?php echo esc_url( home_url( \'/\' ) ); ?>page/2/" title="Zur Seite 2">on page 2</a>:</h3></div>
                <ul>
                <?php query_posts(\'showposts=\'.$post_num.\'&offset=\'.$post_num);
                if (have_posts()) : ?><?php while (have_posts()) : the_post();  ?>
                  <li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li>
                <?php endwhile; ?><?php endif; ?><?php wp_reset_query(); ?>
                </ul>
              </div>
            <?php } ?>
我希望你能帮助我!:>

2 个回复
最合适的回答,由SO网友:gmazzap 整理而成

您可以使用全局WP_Query: max_num_pagespaged.

之后避免使用query_posts 对于新查询,请使用的新实例WP_Queryget_posts.

global $wp_query;
if ($wp_query->max_num_pages > 1 && $wp_query->get(\'paged\') < $wp_query->max_num_pages ) {
  $next_page = (int)$wp_query->get(\'paged\') + 1;
  ?>
  <div class="next-content">
    <div class="page-header"><h3 class="article">Weiter <a href="<?php echo esc_url( home_url( \'/\' ) ); ?>page/<?php echo $next_page; ?>/" title="Zur Seite <?php echo $next_page; ?>">auf Seite <?php echo $next_page; ?></a> mit:</h3></div>
    <?php
    $post_num = $wp_query->get(\'posts_per_page\') ? : get_option(\'posts_per_page\');
    $next_posts = get_posts(\'posts_per_page=\' . $post_num . \'&paged=\' . $next_page);
    if ( ! empty($next_posts) ) {
    echo \'<ul>\';
    foreach( $next_posts as $next_post) {
    ?>
    <li><a href="<?php echo get_permalink($next_post) ?>" rel="bookmark"><?php echo get_the_title($next_post); ?></a></li>
    <?php
    }
    echo \'</ul>\';
    }
    ?>
  </div>
  <?php
} 

SO网友:s_ha_dum

只需将所有标记移动到have_posts

if ( is_home() && !is_paged() ) {
  $post_num = get_option(\'posts_per_page\'); 
  $next = new WP_Query(\'posts_per_page=\'.$post_num.\'&offset=\'.$post_num); 
  if ($next->have_posts()) {
    while ($next->have_posts()) { 
      $next->the_post(); ?>
      <div class="next-content">
        <div class="page-header"><h3 class="article">Further articles<a href="<?php echo esc_url( home_url( \'/\' ) ); ?>page/2/" title="Zur Seite 2">on page 2</a>:</h3></div>
        <ul>
          <li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li>
        </ul>
      </div><?php 
    }
  }
  wp_reset_postdata();
}
备注:

您不应该使用query_posts 所以我改了

  • showposts 已经被弃用了很长一段时间了,soI改变了它wp_query 具有全局query_posts您不必重置整个查询。wp_reset_postdata 足够好了
  • 结束