previous_post_link、next_post_linkのin_same_catを孫カテゴリに限定する。

■現状:
個別記事ページにて「前の記事」「次の記事」のリンクを設置できるテンプレートタグ「previous_post_link 」「next_post_link」。このテンプレートタグの3つ目の引数、in_same_cat に trueを設定すると、現在表示している記事と同じカテゴリに属する記事に限定することができる。しかし、投稿時にカテゴリを親カテゴリ+子カテゴリ+孫カテゴリともにチェックしている場合、親カテゴリや子カテゴリの記事も含まれてしまい、ほとんど意味をなさなくなってしまう…孫カテゴリ(or 一番深いカテゴリ)に限定して「前の記事」「次の記事」へのリンクを設置したい。

■対象テンプレートタグ:
previous_post_link()
next_post_link()

■ハック対象ファイル:
wp-includes/template-functions-links.php


 
まずprevious_post_linkを修正。

247行目:$cat_array = get_the_category($post->ID);

のあとに下記を追加↓
248行目:$cat_depth = count($cat_array) - 1;

※カテゴリ階層の深さに応じて適切なIDを取得するため、配列の最後の位置を取得して下記へ代入。

249行目:$join .= ' AND (category_id = ' . intval($cat_array[0]->cat_ID);
を下記のように修正↓
249行目:$join .= ' AND (category_id = ' . intval($cat_array[$cat_depth]->cat_ID);

252〜254行目の for〜 をコメントアウト。

next_post_link用に279行目からも同様に修正。

■例:
親カテゴリ「ジャンル」
子カテゴリ「ブログ」
孫カテゴリ「WordPress」
それぞれにチェックを入れた記事の場合、孫カテゴリの「WordPress」に属する記事のみへ「前の記事」「次の記事」が有効になる。



↑ PageTop

この記事へのコメント
コメントを書く
name

mail

url

comment

認証コード: *


※画像の中の文字を半角で入力してください。

この記事へのトラックバック

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は180日以上新しい記事の投稿がないブログに表示されております。