2010-04-27 17 views
6

Korzystam z następującego kodu, aby wyświetlić link "poprzednie posty" na moim blogu Wordpress.WordPress: Sprawdź, czy istnieją wcześniejsze posty przed wyświetleniem linku

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

Problem jest, gdy nie arn't wszelkie wcześniejsze posty, podczas gdy link nie wyświetla, ja wciąż

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

wydrukowany. Czy istnieje instrukcja if(), którą mógłbym owinąć wokół, aby sprawdzić, czy są jakieś wcześniejsze posty i czy wypisuje je, jeśli są?

Odpowiedz

13

Można spróbować czegoś jak ten

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

get_previous_posts_link zwraca null (wartość falsy), jeśli nie ma żadnych poprzedni post.

+0

dzięki! –

+0

To nie działa dla mnie w WordPress 4.6.1 –

+0

Czy nie powinno to być '==' zamiast '='? – brasofilo

7

Wystarczy być jasne:

odpowiedź Colina nie jest poprawna w mojej opinii. get_previous_post nie jest przestarzałe, previous_post jest.

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

Dla mnie używanie get_next_post nadal działa dobrze dla mnie.

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

+1 to działa dobrze dla mnie w WP 3.5.2 – Alex

+0

Działa dla mnie w WP WordPress 4.6.1 –

2

Żadna z odpowiedzi nie zadziałała. Rozwiązałem to w ten sposób:

$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; ?> 
Powiązane problemy