このブログは今後は更新されません。FE.labsにてWordPress向けの記事も更新してゆきますのでよろしくお願いします。
今後このドメインは、ファーストエレメントのWordPress関連業務のブランドサイトとして近くリニューアルする予定です(2012/8/24)。
カテゴリ&タグ&カスタムフィールド&年月&キーワードで絞り込み検索ができるプラグイン『FE Advanced Search』

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」に属する記事のみへ「前の記事」「次の記事」が有効になる。

このエントリーをはてなブックマークに追加

1件のコメントがありますコメントのRSSフィード

  1. hajime より:

    この記事を発見して解決できると思いきや、、、

    最新版(v2.8)だと wp-includes/template-functions-links.php

    のファイルが無くなってしまってるのですねぇ。。。

    ショック。。

コメント/質問お待ちしています

トラックバックURL:
http://wpcms.jp/173/trackback/

CATEGORY

ARCHIVE

2017年9月
« 12月    
 12
3456789
10111213141516
17181920212223
24252627282930