10

这是关于单个帖子的视图。我正在尝试像这样设置上一篇和下一篇博文的链接:

<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 和指定的宽度和高度来获取图像作为背景。链接帖子的标题应该可以通过 a-tag 的标题属性访问,以便用户可以通过悬停来查看它们。
我还想限制当前类别的链接帖子。所以我需要想办法得到

  1. 带有上一篇/下一篇文章的 href 的 a-tag
  2. 与当前查看的属于同一类别
  3. 由于背景图像而没有内部文本
  4. 标题属性中的上一个/下一个帖子名称
  5. 使用自定义 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 版。

4

4 回答 4

46

不需要函数和过滤器,您只需使用andget_adjacent_post代替,注意用于获取上一篇和下一篇文章,您可以在此处阅读有关它 的内容要获取上一篇文章及其标题属性,请使用此next_post_linkprev_post_linkget_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>'; }
于 2013-02-03T00:54:48.643 回答
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 codex中搜索了几次,但没有遇到这个功能,现在偶然发现它。

如果有人有更好/更简单/更快的方法,请发布以获得可接受的答案。

于 2012-07-08T12:16:25.493 回答
0

第 1 步:您只需在下面的 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 步:现在您可以在您想要的任何页面上打印帖子 url 和标题

<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>  
于 2021-08-18T14:57:59.580 回答
-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>';

?>
于 2012-07-07T23:54:26.420 回答