2010-04-27 53 views
6

我使用以下代码在我的WordPress博客上显示“以前的帖子”链接。WordPress的:在显示链接之前检查是否有以前的帖子

 <nav> 
      <ul> 
       <li><?php previous_posts_link('Newer Entries &raquo;') ?></li> 
</ul 
</nav> 

问题是,当有ARN'T任何以前的帖子,而该链接不显示,我仍然得到

<nav> 
      <ul> 
       <li><</li> 
</ul 
</nav> 

打印出来。是否有一个if()语句可以将它全部包装起来,以便检查是否有以前的帖子,并且只有在有的时候才打印出来?

回答

13

你可以尝试这样的事情

<?php 
    if($link = get_previous_posts_link()) { 
     echo '<ul><li>'.$link.'</li></ul>'; 
?> 

get_previous_posts_link返回空值(falsy值),如果没有任何以前的帖子。

+0

非常感谢! – 2010-04-27 18:12:57

+0

这不适合我在WordPress 4.6.1 – 2017-02-07 23:56:18

+0

不应该是'=='而不是'='? – brasofilo 2017-10-05 14:33:41

7

只是要清楚:

科林的答案在我看来是不正确的。 get_previous_post不被弃用,previous_post是。

http://codex.wordpress.org/Function_Reference/get_previous_post http://codex.wordpress.org/Function_Reference/previous_post

对我来说,使用get_next_post的工作仍然对我很好。

if(get_next_post()) { } 
if(get_previous_post()) { } 
+1

+1这适用于我在WP 3.5.2 – Alex 2013-07-24 09:16:51

+0

适用于我在WP WordPress 4.6.1 – 2017-02-07 23:55:32

2

没有答案为我工作。 我这样解决:

$next = get_permalink(get_adjacent_post(false,'',false)); //next post url 
$prev= get_permalink(get_adjacent_post(false,'',true)); //previous post url 
<?php if (get_the_permalink()!=$prev): ?> 
    <a href='<?php echo $prev ?>'>Previous</a> 
<?php endif; ?> 
<?php if (get_the_permalink()!=$next): ?> 
    <a href="<?php echo $next ?>">Next</a> 
<?php endif; ?> 
相关问题