2015-10-01 115 views
-1

议决下一页/一篇文章链接订购

我穷尽搜索提供下一个方法和上一篇文章中从它通常出现在单以不同的方式链接发布

默认情况下它:

  • 是按时间顺序排列

  • 链接所有博客类别

的职位,但我需要它:

  • 字母顺序排列的

  • 来自同一类别链接到帖子仅

我不是开发人员,但我发现了两个码,我想如果我能合并这两个问题将得到解决。请有人帮助我吗?

CODE 1 - 打开下一个/后退链接alphabetcally,但不能从相同类别(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'); 

CODE 2 - 关闭来自相同类别接着/后退的链接,但是不按字母顺序(source

add_filter('get_next_post_join', 'navigate_in_same_taxonomy_join', 20); 
add_filter('get_previous_post_join', 'navigate_in_same_taxonomy_join', 20); 
function navigate_in_same_taxonomy_join() { 
global $wpdb; 
return " INNER JOIN $wpdb->term_relationships AS tr ON p.ID = tr.object_id INNER JOIN $wpdb->term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id"; 
} 


add_filter('get_next_post_where' , 'navigate_in_same_taxonomy_where'); 
add_filter('get_previous_post_where' , 'navigate_in_same_taxonomy_where'); 
function navigate_in_same_taxonomy_where($original) { 
global $wpdb, $post; 
$where = ''; 
$taxonomy = 'category'; 
$op = ('get_previous_post_where' == current_filter()) ? '<' : '>'; 
$where = $wpdb->prepare("AND tt.taxonomy = %s", $taxonomy); 
if (! is_object_in_taxonomy($post->post_type, $taxonomy)) 
return $original ; 

$term_array = wp_get_object_terms($post->ID, $taxonomy, array('fields' => 'ids')); 

$term_array = array_map('intval', $term_array); 

if (! $term_array || is_wp_error($term_array)) 
return $original ; 

$where = " AND tt.term_id IN (" . implode(',', $term_array) . ")"; 
return $wpdb->prepare("WHERE p.post_date $op %s AND p.post_type = %s AND p.post_status = 'publish' $where", $post->post_date, $post->post_type); 
} 

经过数周寻找解决方案,这里是FINAL ANSWER

谢谢你的帮助!

回答

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 } ?> 
+0

伙计们,我很高兴你的反应,但这种方式下/上一个链接不工作按字母顺序排列。我发现了新的信息,我想可以帮助我,但我不是开发人员,所以我不知道该怎么做。 我正在用新信息更新我的问题。请阅读,如果你可以。 再次感谢! – Dormiu

相关问题