Вопрос по wordpress, php – как получить следующий / предыдущий пост hrefs и заголовки в WordPress

7

Речь идет о просмотре одного поста. Я пытаюсь установить ссылки для предыдущего и следующего постов следующим образом:

<a class="prevpost" href="linktoprevpost" title="prev post's title">&nbsp;</a>
<a class="nextpost" href="linktonextpost" title="next post's title">&nbsp;</a>

где обе ссылки получают изображение в качестве фона, используя display: block и указанные ширину и высоту. Заголовки связанных сообщений должны быть доступны через атрибут title тегов a, чтобы пользователи могли видеть их при наведении курсора.
Я также хочу ограничить связанные посты в текущей категории. Поэтому мне нужно найти способ получить

an a-tag with the href of the previous/next post which is in the same category as the one currently viewed without inner text because of the backgroundimage with the previous/next post name in title-attribute with a custom css-class


Соответствие категории должно быть только первым уровнем, потому что я разделил свою страницу на 3 основные категории. Я использую

$a = get_the_category(get_the_ID());
$cat = $a[0]->name;

для получения имени первой категории и установки его в качестве дополнительного body-класса в header.php. Может быть, я мог бы использовать это снова?

Я также узнал, что используя previous_post_link () и next_post_link (), вот так

next_post_link('%link', '', TRUE);

дает мне сообщения той же категории без внутреннего содержания, поэтому 1 & amp; 2 & amp; 3 будет решена. Но, похоже, чтобы получить 4 & amp; 5 Мне тоже понадобится другой способ.

Использование Wordpress версии 3.4.1.

Речь идет о предыдущей странице, а не о публикации, и я не могу найти совпадения в моем списке из 5 пунктов выше. 32bitfloat
Смотрите такжеwordpress.stackexchange.com/questions/57831/… fuxia

Ваш Ответ

3   ответа
-3
<?
echo '<a href="'.get_permalink( get_the_ID()-1 ).'" title="'.get_the_title( get_the_ID()-1 ).'">Previous</a>'; 
echo '<a href="'.get_permalink( get_the_ID()+1 ).'" title="'.get_the_title( get_the_ID()-1 ).'">Next</a>';

?>
Не легко. Вы можете использовать операторы if, чтобы увидеть, есть ли следующая страница или есть ли предыдущая страница
спасибо за ваш ответ, но я полагаю, что не могу идти по идентификаторам постов, если хочу ограничить связанные посты в основной текущей категории. Возможно, следующий идентификатор вернет сообщение другой категории. 32bitfloat
добавление и вычитание 1 из идентификатора определенно не является надежным способом получения следующих и предыдущих сообщений.
28

все что вам нужно сделать, это использоватьget_adjacent_post вместоnext_post_link а такжеprev_post_link, Обратите внимание, чтоget_adjacent_post используется, чтобы получить предыдущий и следующий пост, вы можете прочитать об этомВот Чтобы получить предыдущее сообщение и его атрибут заголовка, используйте этот

$prev_post = get_adjacent_post(false, '', true);
if(!empty($prev_post)) {
echo '<a href="' . get_permalink($prev_post->ID) . '" title="' . $prev_post->post_title . '">' . $prev_post->post_title . '</a>'; }

Чтобы получить следующий пост и его атрибут заголовка, используйте этот

$next_post = get_adjacent_post(false, '', false);
if(!empty($next_post)) {
echo '<a href="' . get_permalink($next_post->ID) . '" title="' . $next_post->post_title . '">' . $next_post->post_title . '</a>'; }
Это спасло мою задницу. огромное спасибо
1

Теперь это мой код:

$p = get_adjacent_post(1, '', 1);
if(!empty($p)) echo '<a class="prevpost" href="'.$p->guid.'" title="'.$p->post_title.'">&nbsp</a>';
$n = get_adjacent_post(1, '', 0);
if(!empty($n)) echo '<a class="nextpost" href="'.$n->guid.'" title="'.$n->post_title.'">&nbsp</a>';

Функция возвращает объект предыдущего / следующего поста, который я могу использовать для генерации своих ссылок. Первый параметр предназначен для ограничения поста на одной и той же кошке.
Вчера я несколько раз искал в кодексе WordPress, но не встретил эту функцию, теперь случайно наткнулся на нее.

Если у кого-то есть метод получше / проще / быстрее, пожалуйста, напишите, чтобы получить приемлемый ответ.

Это полезно ..
не используйте guid в качестве ссылки для публикации, он не обновляется при смене почтовых слагов или при переходе на новый домен и т. д.get_permalink($post->ID) вместо этого, поскольку это всегда даст вам правильную ссылку.

Похожие вопросы