单击上一个/下一个按钮wordpress时显示相同类别的帖子

时间:2013-10-21 22:19:27

标签: php wordpress post categories

我有以下问题。当我点击相同类别的上一个/下一个按钮时,遗憾的是我按时间顺序收到上一个/下一个帖子,而不是相同类别的上一个/下一个帖子。

以下是代码:

< div id="previous_post">
< ?php previous_post_link( '%link', __( '<span class="prev"><< Preivous Post</span>', 'esquire' ) ); ? > 
< /div>

< div id="next_post">   < ?php next_post_link( '%link', __( '<span class="next">Next Post >></span>',  'esquire' ) ); ? >

< /div>

我试图用这篇文章解决我的问题http://codex.wordpress.org/Function_Reference/next_post_link 但是我做错了。

请问任何建议?

3 个答案:

答案 0 :(得分:1)

例如

 previous_post_link( '%link', __( '<span class="prev"><< Preivous Post</span>', TRUE, 'esquire' ) );

我不想每次都指定每个类别。我希望自动完成此操作。例如,当它显示来自类别机器的帖子并且您打开以阅读第一篇帖子时,当您点击下一篇文章时,您必须看到同一类别的下一篇文章而不是下一篇文章。如果该类别是食品,那么同一类别的下一篇文章。

我很清楚,或者我让你更困惑?

答案 1 :(得分:1)

从父主题复制single.php页面并将其粘贴到Child-theme的目录中。从child-theme目录打开single.php,并在文件末尾添加以下代码[在get_footer()之前; ]

<?php
$post_id = $post->ID; // Get current post ID
$cat = get_the_category(); 
$current_cat_id = $cat[0]->cat_ID; // Get current Category ID 

$args = array('category'=>$current_cat_id,'orderby'=>'post_date','order'=> 'DESC');
$posts = get_posts($args);
// Get IDs of posts retrieved by get_posts function
$ids = array();
foreach ($posts as $thepost) {
    $ids[] = $thepost->ID;
}
// Get and Echo the Previous and Next post link within same Category
$index = array_search($post->ID, $ids);
$prev_post = $ids[$index-1];
$next_post = $ids[$index+1];
?>

<?php if (!empty($prev_post)){ ?> <a class="previous-post" rel="prev" href="<?php echo get_permalink($prev_post) ?>"> <span class="meta-icon"><i class="fa fa-angle-left fa-lg"></i></span> Previous</a> <?php } ?>

<?php if (!empty($next_post)){ ?> <a class="next-post" rel="next" href="<?php echo get_permalink($next_post) ?>">Next <span class="meta-icon"><i class="fa fa-angle-right fa-lg"></i></span> </a> <?php } ?>

添加此代码后,将以下代码粘贴到您的子主题的Style.css中以设置链接的样式:

a.previous-post, a.next-post {
    color: #fff;
    background-color: #4498e7;
    text-align: center;
    height: 34px;
    line-height: 34px;
    font-size: 14px;
    border: 1px solid;
    padding: 0 20px;
    margin-bottom: 30px;
    text-transform: uppercase;
    border-radius: 4px;
    font-weight: bold;
}

a.previous-post:hover, a.next-post:hover {
    color: #4498e7;
    background-color: #fff;
}

a.previous-post {
    float: left !important;
}

a.next-post {
    float: right !important;
}

要在操作中查看这些链接,请访问我的网站:www.techtutsonline.com

让我知道结果:)

答案 2 :(得分:0)

这是最终/正确的语法

    previous_post_link( '%link', __( '<span class="prev"><< Previous Post</span>', 'esquire' ), TRUE );

谢谢!