如何在wordpress中获取下一个/上一个帖子的href和标题
Posted
技术标签:
【中文标题】如何在wordpress中获取下一个/上一个帖子的href和标题【英文标题】:how to get next/previous post hrefs and titles in wordpress 【发布时间】:2012-07-07 23:41:18 【问题描述】:这是关于单个帖子的视图。我正在尝试像这样设置上一篇和下一篇博文的链接:
<a class="prevpost" href="linktoprevpost" title="prev post's title"> </a>
<a class="nextpost" href="linktonextpost" title="next post's title"> </a>
两个链接都使用 display: block 和指定的宽度和高度来获取图像作为背景。链接帖子的标题应该可以通过 a 标记的标题属性访问,以便用户可以通过悬停来查看它们。 我还想限制当前类别的链接帖子。所以我需要想办法得到
-
带有上一篇/下一篇文章 href 的 a-tag
与当前查看的属于同一类别
因为背景图片没有内部文字
在标题属性中包含上一个/下一个帖子名称
带有自定义 css 类
类别匹配只需第一级,因为我将页面分为 3 个主要类别。我正在使用
$a = get_the_category(get_the_ID());
$cat = $a[0]->name;
用于获取第一个类别的名称并将其设置为 header.php 中的附加主体类。也许我可以重复使用它? 我还发现像这样使用 previous_post_link() 和 next_post_link()
next_post_link('%link', '', TRUE);
给我相同类别的帖子,没有内容,所以 1 & 2 & 3 将被解决。但看来,要获得 4 和 5,我还需要另一种方法。
使用 Wordpress 3.4.1 版。
【问题讨论】:
另见wordpress.stackexchange.com/questions/57831/… 这是关于上一页,而不是帖子,我找不到与我上面的 5 点列表相匹配的内容。 【参考方案1】:不需要函数和过滤器你需要做的就是使用get_adjacent_post
而不是next_post_link
和prev_post_link
,注意get_adjacent_post
用于获取上一篇和下一篇文章,你可以阅读它@ 987654321@
要获取以前的帖子及其标题属性,请使用此
$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>';
【讨论】:
这救了我的命。非常感谢 我使用它,但对于下一篇文章,它会显示当前帖子 ID,而对于上一篇文章,它会显示以前帖子的 3 或 4 倍 ID 帖子 我就是喜欢这个解决方案,它适合我。非常感谢 - @Christina【参考方案2】:知道了。
现在这是我的代码:
$p = get_adjacent_post(1, '', 1);
if(!empty($p)) echo '<a class="prevpost" href="'.$p->guid.'" title="'.$p->post_title.'"> </a>';
$n = get_adjacent_post(1, '', 0);
if(!empty($n)) echo '<a class="nextpost" href="'.$n->guid.'" title="'.$n->post_title.'"> </a>';
该函数返回上一篇/下一篇文章的对象,我可以使用它来生成我的链接。第一个参数用于限制在同一只猫上发帖。 昨天我在wordpress codex中搜索了几次,但没有遇到这个功能,现在偶然发现它。 如果有人有更好/更简单/更快的方法,请发布以获得可接受的答案。
【讨论】:
不要将 guid 用作发布链接,当发布 slug 更改或移动到新域等时它不会更新。请改用get_permalink($post->ID)
,因为这总是会给你正确的链接。【参考方案3】:
第一步:你只需要在function.php下面添加这个函数
// its to ssolve single page next and previous liinks
# get_adjacent_post( $in_same_cat = false, $excluded_categories = '', $previous = true )
function echo_next_previous_post_link($fmg_name="link" ,$selector="next")
if ($selector=="next")
$next_post_obj = get_adjacent_post( '', '', false );
$next_post_ID = isset( $next_post_obj->ID ) ? $next_post_obj->ID : '';
$next_post_link = get_permalink( $next_post_ID );
$next_post_title = get_the_title($next_post_ID);
if ($fmg_name=="link")
echo $next_post_link ;
else
echo $next_post_title ;
else
$previous_post_obj = get_adjacent_post( '', '', true );
$previous_post_ID = isset( $previous_post_obj->ID ) ? $previous_post_obj->ID : '';
$previous_post_link = get_permalink( $previous_post_ID );
$previous_post_title = get_the_title($previous_post_ID);
if ($fmg_name=="link")
echo $previous_post_link ;
else
echo $previous_post_title ;
第 2 步:现在您可以在任何您想要的页面上打印帖子网址和标题
<a href="<?php echo_next_previous_post_link("link","next"); ?>"><?php echo_next_previous_post_link("title","next"); ?></a>
<a href="<?php echo_next_previous_post_link("link","previous"); ?>"><?php echo_next_previous_post_link("title","previous"); ?></a>
【讨论】:
【参考方案4】:<?
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>';
?>
【讨论】:
感谢您的回答,但如果我想限制当前主要类别的链接帖子,我想我不能直接使用帖子 ID。下一个 ID 可能会返回另一个类别的帖子。 不容易。可以使用 if 语句查看是否有下一页或是否有上一页 ID 加减 1 绝对不是获取下一篇和上一篇文章的可靠方法。以上是关于如何在wordpress中获取下一个/上一个帖子的href和标题的主要内容,如果未能解决你的问题,请参考以下文章
Wordpress - 在最深的子类别中获取上一个/下一个帖子?
在 wordpress 中获取 2 级类别中的下一个、上一个帖子