WordPressの投稿ページで改ページリンクを作ってくれる関数 previous_post_link()、previous_post_link() ですが、第3引数 $in_same_term にtrueを指定すると、同じカテゴリ内で遷移するようリンクを作成してくれる。
でも、同じカテゴリって何?って思いソースを追ってみると、get_adjacent_post() という関数に行きつく。ソースを見ると、表示中の記事の全カテゴリから、(指定があれば)第4引数の除外カテゴリIDを取り除いて、1つでも同じカテゴリを含む投稿が対象となるようです。「2つ以上タームが付いている場合はどのタームがついた投稿へリンクするかは選べません。」とか書かずに、「表示中の記事に1つでもカテゴリが一致する記事が遷移対象」とか書けばよいのに。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
if ( $in_same_term ) { if ( ! is_object_in_taxonomy( $post->post_type, $taxonomy ) ) return ''; $term_array = wp_get_object_terms( $post->ID, $taxonomy, array( 'fields' => 'ids' ) ); // Remove any exclusions from the term array to include. $term_array = array_diff( $term_array, (array) $excluded_terms ); $term_array = array_map( 'intval', $term_array ); if ( ! $term_array || is_wp_error( $term_array ) ) return ''; $where .= " AND tt.term_id IN (" . implode( ',', $term_array ) . ")"; } |