WordPressの個別記事ページに出力されるnext/prevを同一カテゴリーのみにする
標準で個別記事ページにnext/prevが出力されている
WordPressバージョン3.9.1の個別記事ページには、headタグ内にrel=”next”とrel=”prev”が出力されている。
標準の状態では、記事の時系列順でタグが出力されるようになっている。具体的には、
<link rel='prev' title='テックカテゴリーの記事' href='http://wordpress391ja.local/2014/06/27/test1/' /> <link rel='next' title='PCカテゴリーの記事' href='http://wordpress391ja.local/2014/06/28/test3/' />
上のようにnext/prevタグが出力される。この例では、分かりやすいようにtitleタグに属するカテゴリーを書いてみた。
- 前の記事(prev) → テックカテゴリーの記事
- 次の記事(next) → PCカテゴリーの記事
そして、現在の記事がテックカテゴリーに属する記事だとしよう。
その場合に、次の記事としてPCカテゴリーの記事がnextに設定されているのは最適なのだろうか?PCカテゴリーの記事ではなく、テックカテゴリーの記事がnextに設定されている方が適切なのではないだろうか?
rel=”next”とrel=”prev”の正しい使い方については、以下のリンクなどを参考に判断して頂きたい。
rel=”next” と rel=”prev” を使用したページネーション
同一カテゴリーのみでnext/prevを設定するやり方
タグの削除
同一カテゴリーの記事で構成したタグを出力する前に、既存のタグを削除する。
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
削除をするだけなら、上のコードをfunctions.phpに追加すれば、next/prevが出力されなくなる。
実際に、headタグ内からnext/prevを削除しているブログ管理者の人は多いようだ。
get_adjacent_post_rel_link
WordPressには、
- link rel=’prev’
- link rel=’next’
双方のタグを生成するget_adjacent_post_rel_linkという関数がある。そして、この関数を使って、同一カテゴリーのみでnext/prevを構成することが可能。
同じカテゴリーで構成するためには、get_adjacent_post_rel_linkに渡す引数を適切にする必要がある。引数の詳細については、
get_adjacent_post_rel_link codex
で確認することが出来る。
具体的には以下のようにした。
add_action('wp_head', 'new_next_prev'); function new_next_prev() { if( is_single() ) { echo get_adjacent_post_rel_link( $title = '%title', $in_same_term = true, $excluded_terms = '', $previous = true, $taxonomy = 'category' ); echo get_adjacent_post_rel_link( $title = '%title', $in_same_term = true, $excluded_terms = '', $previous = false, $taxonomy = 'category' ); } }
引数の
- $in_same_termをtrue
- $taxonomyにcategory
を設定することで、next/prevを同じカテゴリーで出力することが出来る。
これと似た話で、WordPressの記事ページの下の方に次の記事/前の記事をリンクとして出力する関数について以前記事にしたことがある。
twentythirteen_post_navのリンクを同一カテゴリーの記事のみにする方法
twentythirteenの話になってしまうが、公式テーマには、
twentythirteen_post_nav
といった関数でリンクを出力しており、標準では時系列順でリンクを構築することになっているが、引数を調整することで、同一カテゴリーでリンクを構築することが出来るようになっている。
Webエンジニアブログの場合には、twentythirteen_post_navを利用して同一カテゴリーのみでリンクするように構成して運用してきた。
get_adjacent_post_rel_linkの方はこれから設定する予定で前向きな結果があったらブログで報告したいと考えている。
link rel=’prev’とlink rel=’next’についても同一カテゴリーのみで構成することが可能。