2013-05-11 49 views
2

我使用以下代码分别从单个帖子模板获取上一篇和下一篇文章的链接;如何跳过Wordpress中相邻帖子的某些链接?

<?php echo get_permalink(get_adjacent_post(false,'',false)); ?> 

<?php echo get_permalink(get_adjacent_post(false,'',true)); ?> 

我的问题是,请,如果有一定的职位,我想这些代码跳过,并简单地去的那些之后,我能做到这在某种程度上使用自定义字段,否则我怎么能让Wordpress跳过某个链接,然后取出下一个相邻链接,而不是先跳到那个我想跳过然后重定向的东西,而是马上回显正确的链接。

非常感谢!

亚历克斯

+0

谢谢!第一个选项确实很好! – Alex 2013-05-12 18:35:42

回答

3

你可以用不同的方式来解决这个问题。最简单的解决方案可能是使用“排除类别”(第二个参数),例如排除类别的职位与任期ID 5:

get_adjacent_post(false, '5', false) 

另一种选择是使用get_previous_post_whereget_next_post_where过滤器来修改SQL查询。

你可以在选项表后一组ID被排除存储,这里有一个例子,你如何可以排除所有置顶文章:

add_filter('get_previous_post_where', 'so16495117_mod_adjacent'); 
add_filter('get_next_post_where', 'so16495117_mod_adjacent'); 
function so16495117_mod_adjacent($where) { 
    return $where . ' AND p.ID NOT IN (' . implode(',', get_option('sticky_posts')) . ')'; 
} 

或者,正如您在您的问与答建议,你可以过滤发布具有特定后期元键的帖子,例如my_field

add_filter('get_previous_post_where', 'so16495117_mod_adjacent_bis'); 
add_filter('get_next_post_where', 'so16495117_mod_adjacent_bis'); 
function so16495117_mod_adjacent_bis($where) { 
    global $wpdb; 
    return $where . " AND p.ID NOT IN (SELECT post_id FROM $wpdb->postmeta WHERE ($wpdb->postmeta.post_id = p.ID) AND $wpdb->postmeta.meta_key = 'my_field')"; 
} 
相关问题