如何确定是否存在下一页


16

我是Wordpress开发的新手,只是尝试将HTML转换为WordPress主题,我从Chris Coyer的空白主题开始。

<div class="navigation">
    <div class="next-posts">
        <?php next_posts_link('&laquo; Older Entries') ?>
    </div>
    <div class="prev-posts">
        <?php previous_posts_link('Newer Entries &raquo;') ?>
    </div>
</div>

仅当存在时,如何才能输出div next_posts_link()。我需要这个,因为我将<ul>用于分页。如果我不这样做,我会得到一个空的子弹

Answers:


18

您可以使用get_previous_posts_linkget_next_posts_link 确定它们是否存在,如下所示:

$prev_link = get_previous_posts_link(__('&laquo; Older Entries'));
$next_link = get_next_posts_link(__('Newer Entries &raquo;'));
// as suggested in comments
if ($prev_link || $next_link) {
  echo '<ul class="navigation">';
  if ($prev_link){
    echo '<li>'.$prev_link .'</li>';
  }
  if ($next_link){
    echo '<li>'.$next_link .'</li>';
  }
  echo '</ul>';
}

希望这可以帮助


唯一的问题有可能会潜在地呈现一个空列表,这将产生无效的标记,并在效果将使得用户具有与现有的代码相同的问题..
t31os

3
@ t31os,我想我会做的if ($prev_link || $next_link) // output ul
孟杰

是的,那样做..;)
t31os 2011年

更新了代码
Bainternet,2011年

感谢您的代码,它echo '</ul>';在最后一行btw之前丢失了。
戴维

13

我在前一阵子写下来,但仍然有效:

http://www.ericmmartin.com/conditional-pagepost-navigation-links-in-wordpress-redux/

您可以在functions.php文件中添加以下功能:

/**
 * If more than one page exists, return TRUE.
 */
function show_posts_nav() {
    global $wp_query;
    return ($wp_query->max_num_pages > 1);
}

将您的代码更新为:

<?php if (show_posts_nav()) : ?>
<div class="navigation">
    <div class="next-posts"><?php next_posts_link('&laquo; Older Entries') ?></div>
    <div class="prev-posts"><?php previous_posts_link('Newer Entries &raquo;') ?></div>
</div>
<?php endif; ?>

3

最好的解决方案是check $wp_query->max_num_pages,但是您也可以使用:

<?php
if(paginate_links()) {
...
}

1
重要的是要注意,$wp_query并非到处都可用。例如,我尝试在WooCommerce模板替代中使用它,并且该对象不存在,因此我不得不从内部调用它,functions.php而没有使用Eric Martin的答案。
Brett

当然,需要处理某些情况,例如自定义循环和woocommerce。对于您的情况,您应该检查如何获取woocommerce的wp查询或它生成的任何查询。
Maxwell sc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.