WordPressをCMSとした企業サイトやポータルサイト、Webサービス開発方法やTipsなど。 ファーストエレメントが運営する、WordPressに特化した技術系ブログ。
■現状:
個別記事ページにて「前の記事」「次の記事」のリンクを設置できるテンプレートタグ「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」に属する記事のみへ「前の記事」「次の記事」が有効になる。
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| « 12月 | ||||||
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | |||
この記事を発見して解決できると思いきや、、、
最新版(v2.8)だと wp-includes/template-functions-links.php
のファイルが無くなってしまってるのですねぇ。。。
ショック。。