2013-05-11 50 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')"; 
} 
相關問題