下一页/上一篇文章链接来自相同类别和按字母顺序排序

时间:2015-10-01 09:29:10

标签: wordpress wordpress-theming

分辨

我正在详尽地搜索提供下一个和上一个帖子链接的方法,其方式与单个帖子中通常出现的方式不同。

通过DEFAULT:

  • 按时间顺序排列

  • 指向所有博客类别的帖子的链接

但我需要它:

  • ALPHABETICALLY ordered

  • 仅链接到同一类别的帖子

我不是开发人员,但我发现了两个代码,我想如果我能合并两个问题就可以解决了。有人可以帮帮我吗?

代码1 - 按字母顺序转动下一个/上一个链接,但不是来自同一类别(source

{{ page.richtextpage.content|richtext_filters|safe }}


{{ page.richtextpage.content }}

代码2 - 从同一类别转换下一个/上一个链接,但不按字母顺序(source

function filter_next_post_sort($sort) {
    $sort = "ORDER BY p.post_title ASC LIMIT 1";
    return $sort;
}
function filter_next_post_where($where) {
    global $post, $wpdb;
    return $wpdb->prepare("WHERE p.post_title > '%s' AND p.post_type = '". get_post_type($post)."' AND p.post_status = 'publish'",$post->post_title);
}

function filter_previous_post_sort($sort) {
    $sort = "ORDER BY p.post_title DESC LIMIT 1";
    return $sort;
}
function filter_previous_post_where($where) {
    global $post, $wpdb;
    return $wpdb->prepare("WHERE p.post_title < '%s' AND p.post_type = '". get_post_type($post)."' AND p.post_status = 'publish'",$post->post_title);
}

add_filter('get_next_post_sort',   'filter_next_post_sort');
add_filter('get_next_post_where',  'filter_next_post_where');

add_filter('get_previous_post_sort',  'filter_previous_post_sort');
add_filter('get_previous_post_where', 'filter_previous_post_where');

经过数周的搜索解决方案,这里是FINAL ANSWER

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您应该使用get_adjacent_post();这是为您提供的下一篇或上一篇文章。

这是上一篇文章:

<?php 
    $prev_post = get_adjacent_post( true, '', true, 'taxonomy_slug' ); ?>
    if ( is_a( $prev_post, 'WP_Post' ) ) {
?>

<a href="<?php echo get_permalink( $prev_post->ID ); ?>"><?php echo get_the_title( $prev_post->ID ); ?></a>

<?php } ?>

这是下一篇文章:

<?php 
    $next_post = get_adjacent_post( true, '', false, 'taxonomy_slug' );
    if ( is_a( $next_post, 'WP_Post' ) ) {
?>

<a href="<?php echo get_permalink( $next_post->ID ); ?>"><?php echo get_the_title( $next_post->ID ); ?></a>

<?php } ?>