Wordpress: Проверьте, есть ли предыдущие сообщения, прежде чем отображать ссылку
Я использую следующий код для отображения ссылки "предыдущие сообщения" в моем блоге Wordpress.
<nav>
<ul>
<li><?php previous_posts_link('Newer Entries »') ?></li>
</ul
</nav>
Проблема в том, что когда нет предыдущих сообщений, а ссылка не отображается, я все равно получаю
<nav>
<ul>
<li><</li>
</ul
</nav>
Распечатано. Есть ли оператор if(), который я мог бы обернуть вокруг всего этого, чтобы он проверял, есть ли какие-либо предыдущие сообщения, и распечатывал его только в том случае, если они есть?
4 answers
Вы можете попробовать что-то вроде этого
<?php
if($link = get_previous_posts_link()) {
echo '<ul><li>'.$link.'</li></ul>';
?>
get_previous_posts_link
возвращает значение null (ложное значение), если предыдущей записи не было.
Просто для ясности:
Ответ Колина, на мой взгляд, неверен. 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()) { }
Для людей, проверяющих это в 2013 году, get_previous_post был обесценен.
Http://codex.wordpress.org/Next_and_Previous_Links http://codex.wordpress.org/Function_Reference/previous_post
Раньше я использовал это:/
if(get_next_post()) { echo 'next'; }
if(get_previous_post()) { echo 'last'; }
Но теперь я использую это:)
if(get_next_posts_link()) { echo 'next'; }
if(get_previous_posts_link()) { echo 'last'; }
Ни один из ответов не сработал для меня. Я решил это так:
$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; ?>