wordpress: заполнитель previous_post_link () / next_post_link () - PullRequest
4 голосов
/ 09 июня 2010

У меня проблемы с функциями previous_post_link() и next_post_link(). Если предыдущего сообщения нет, функция previous_post_link() не отображает ссылку, также как для next_post_link() и последнего сообщения. Я хотел бы иметь изображение-заполнитель, чтобы дизайн оставался неизменным.

В настоящее время у меня есть изображения зеленых стрелок, указывающих влево и вправо, я хотел бы разместить изображение серой стрелки, если больше нет сообщений, к которым можно вернуться.

Есть ли способ использовать функции next_post_link() / previous_post_link(), но не удалить ссылку.

Мне также интересно, есть ли способ для циклических ссылок, так что, если вы перейдете к самому последнему сообщению, ссылка на следующее сообщение вернет вас к первому сообщению.

************ ОБНОВЛЕНО ************

Вот код, основанный на «тихом» совете (принятый ответ) для использования get_adjacent_post():

<?php 
    if(get_adjacent_post(false, '', true)) { 
        previous_post_link('%link','<img src="larr.gif"/>'); 
    }
    else { 
        echo '<img src="larr2.gif"/>'; 
    }; 

    if(get_adjacent_post(false, '', false)) { 
        next_post_link('%link','<img src="rarr.gif"/>'); 
    }
    else { 
        echo '<img src="rarr2.gif">'; 
    }; 
?>

Ответы [ 3 ]

3 голосов
/ 09 июня 2010

Таким образом, вы можете «захватить» то, что next_post_link() и previous_post_link() вернется, используя ob_start() и ob_get_clean(), затем примените к нему условное выражение.

Код на практике:

$previous_string = "&lt;-Back";
ob_start(); // start output buffering
previous_post_link("%link", $previous_string);
$previous_link = ob_get_clean(); // stop output buffering and store

if ($previous_link == '') {
  echo '<span style="color: #ccc">' . $previous_string . '</span>';
} else {
  echo $previous_link;
}
2 голосов
/ 09 июня 2010

Я никогда не пробовал это сам. Тем не менее, вы можете сослаться на этот пост . Он использует get_adjacent_post () .

1 голос
/ 16 мая 2011

Почему вы не можете попробовать ниже?

<div style="float:right"><?php if(get_previous_posts_link()) { previous_posts_link('Newer Entries &raquo;'); } else { echo 'No Newer Entries'; } ; ?></div>

В качестве альтернативы для отображения следующего и предыдущего сообщения Ссылки на сообщение в блоге вы можете легко сделать это. Это очень хорошо объяснено на globinch.com (Советы по WordPress: как добавить ссылку на следующий и предыдущий пост в блог?)

http://www.globinch.com/2010/10/12/wordpress-tips-how-to-add-next-and-previous-post-links-to-blog/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...