tips

タグとカテゴリで強弱を設定した関連記事を取得する。

abstract13

関連度に応じた関連記事を表示する

お題の通り、wordpress用の自作の関連記事表示ファンクションです。精度の高さを求めるなら記事内容に踏み込んだプラグイン(YARPPとか)を使うのが基本です。しかしそういったプラグインを回避したいこともある。その場合、タグで記事を表示したり、カテゴリ毎の新着記事を出力したりで充分なケースもあるが、やはり関連性という点でもの足らず、どうしても古い記事が埋もれてしまいがちに。で、ここで紹介する方法は、既存のプラグイン未満だけどもタグとタクソノミの重複度で関連度合いの評価を加えたものです。このページの下で使っています。

 

主な特徴

関数で処理するメリットとしてはやっぱりアレンジが容易いことです。主な特徴としては以下の通り。

カスタム投稿タイプやカスタムタクソノミに対応

タグ・カテゴリ・カスタムタクソノミの重複回数に応じて関連度を計測

カスタムフィールドに関連度の高い記事のIDを登録

ちなみに、デフォルトではタグが他のタクソノミよりも優先的に点数付けされる設定にしていますが、カスタムタクソノミなどケースバイケースで設定してください。

 

CODE : Related post IDs in a custom field

以下の関数に任意にアレンジを加えてfunctions.phpに記述します。

 

###0###

関連記事IDをカスタムフィールドに登録しているので、通常表示には処理時間はかかりません。記事の新規作成があったときに関連記事が再設定されるため、そのページを訪れた最初のユーザーにだけ処理が発生します。関数の冒頭にある[ $modified_date ]は[ 20140430 ]のような日付型になっていますので、ブログの更新頻度が高い場合、更新後一ヶ月以上経っていたら関連記事も更新する[ $modified_date = mysql2date( ‘Ymd’, get_lastpostmodified(), false ) – 30; ]とすればかなりの程度負担が調整できます。また[ $posts_per_page = -1; ]を[ $posts_per_page = 200; ]としたりして新しい記事限定にすれば、検索にかかる時間が短縮できます。(wp_cronの使用に支障のある環境だったので上記のような手法で設計していますが、問題なく使える環境であればcronですべての投稿を処理してしまっても良いと思います。)

 

テーマ内で呼び出す方法

get_related_posts()という関数で呼び出すと、IDが配列で得られます。このサイトでは以下のように呼び出しています。

###1###

Your Comment

コードの記述は<pre>または<code>タグで括って下さい。自動的にエスケープされます。

 

右の文字を入力して下さい captcha