関連記事の表示をいじった | 今日もだらだら、読書日記。

関連記事の表示をいじった

自分用メモ。

やっぱり基本は「SimilarPosts」

ブログの下の方にある関連記事の表示には長いこと「Similar Posts」というプラグインを使っていました。このプラグインの良いところはどういう基準で「関連記事」を取ってくるか、本文・タイトル・タグの3点の中で比重を決定できるところ。基本的に作者・イラストレーター・シリーズ名だけでタグを作っている分にはタイトルとタグに比重を傾けるだけで概ねシリーズの既刊を関連記事として並べてくれるのです。今はわざと低めにしてるけど、本文の比重高めにしてどんな記事が上がってくるのかチェックしてみるのも面白い。


今はこんな感じで設定してますが、この設定だとタイトルやタグの一致が少ない記事は指定した件数出てこなかったりする。んで、本文一致を高めにすると同じシリーズの記事を差し置いて文章が似通っているだけの全然関係ない記事が拾われてくることがあるのでそれもうちのブログみたいなところだと不本意な結果になる。関連記事の比重にカテゴリを設定できればかなり楽になりそうなんですが……逆にレーベル名までタグで入れてる人とかにはかなりいい感じに出そう。

ifなど複雑な指定は入れられませんが、デザインの設定でカスタムフィールドの内容をかんたんに呼び出せるのもポイント高いです。

「Simplicity2」の関連記事表示機能も悪くない

一方、私が使用しているWP用テーマ「Simplicity2」には関連記事表示機能がデフォルトで付属しています。こちらはカテゴリの一致・タグの一致から選べる形でカテゴリやタグのどちらかで記事内容をかなり細かく細分化しているブログや、逆に日記とかの大まかなラベリングで構わない場合は汎用性高そう。候補に上がった記事の中から毎回ランダムで記事を表示してくれるので特に何もしなくてもブログの記事を広めに誘導入れてくれるのもポイント高い。テーマ付属の機能であるがゆえの手のかからなさも良い感じです。

うちのブログの場合はカテゴリのみ・タグのみの絞り込みだとどうしても表示される記事の範囲が広すぎてしまうので、こちらは使用していません(実は個人サイトの方で使ってたりする)。

「ACF」を使って関連記事の指定が出来るようにした

最近「1巻リンク」や属性タグなど、タグの種類を増やした関係で特に単巻ものやシリーズ1〜2巻の記事での関連記事の精度がやたらと低くなってきました。本当は「タグの一致件数が多い記事を表示」とか「作者・イラストレータータグに一致する記事があればそれを優先」とかになってくれると楽なのですが、そういう重み付けは出来ないようで。

悩んだ結果、「Advanced Custom Fields」を利用して関連記事を表示するためのフィールドを作り、それが設定されていないときはこれまで通りSimilarPostsを表示させることにしました。SimilarPosts、マジで余計なタグを追加してない続刊の記事で使うときは本当に何もしなくて良いので楽なんだ……。

基本的な表示は下記の記事を参考にしてフィードグループと出力用のHTMLを作成。
 関連記事を表示するプラグインを使用することもできますが、あまり融通が利かなかったり、CSSの調整が面倒だったりなので、制作に慣れている方であれば、自分でゼロから設定してしまった方が早い場合があります。  今回は、カスタムフィールドを追加す
戻り値の設定は「投稿ID」で、と記載されていたのですが「投稿オブジェクト」を指定しないとダメでした。

関連記事の指定が無いときは仕様しないので、使用するのは2回目のループタグ内の部分。普段のテンプレートからソースを取ってくると動かないので、コピペしてきた部分を参考に少し変更する必要があります。カスタムフィールドの出力でかなり苦労したのですが、$post->ID となっている部分を $post_field->IDに変更すればおおむねOK。


フィードグループは関連URLを設定するものとは別に、表示切り替え用のフィールドを入れます。切り替え用のフィールドに何も入っていなかったらSimilarPostsを、何か入っていたら関連記事として指定した記事を表示するという形。Simplicity2の場合は「related-entries.php」から関連記事を呼び出しているので、そのテンプレートの関連記事呼び出し部分に上記の分岐を入れました。

特にシリーズ1巻の表示はちょっと外れた感じの関連記事が並ぶことが多かったので、今後はちょっと意識的に手動で設定するようにしていこうとおもいます。乞うご期待!(というほどのものでもない)
記事への反応
なにかあれば
  • わかる(0)
  • 面白かった(0)
  • 興味が湧いた(0)
  • 持ってる(0)
  • 買いました!(0)
  • ぱちぱちー(0)