【WordPress】統計学的手法で「この記事を読んだ人は、こちらの記事も読んでいます」を実装する

「この記事を読んだ人は、こちらの記事も読んでいます」を実現するプラグインを作成しました。

CFiltering
このプラグインは「この記事を読んだ方はこんな記事も読んでいます」の機能を実現するためのものです。 有効化することで関連記事を取得するいくつかの関数を使用できるようになります。 テー...
スポンサーリンク

どんなプラグイン?

ECサイトによくある「この商品を買った人は、こちらの商品も買っています」のような機能を実現するプラグインです。

このプラグイン自体は表示を行いません。

閲覧履歴からJaccard係数というものを計算し、それをもとにおすすめする記事を取得する関数を提供します。

すでにテーマなどで提供されている関連記事の機能をフックして使用したり、新しくプラグインを作成して表示を担当させたりすることを想定しています。

後ほどSimplicity2の関連記事の機能を変更する方法を提示します。

また同時に読まれやすい記事を解析する手段として利用することも可能です。

screenshot-2

ユーザーの行動をもとにしたレコメンデーション

ユーザーに対して別の記事を示す方法はいろいろあります。

例えば

  • 記事の類似度
  • 人気順
  • 新着順
  • ランダム

などが挙げられます。

このプラグインではユーザーの閲覧履歴から、同時に読まれやすい記事を計算して提案を行います。

したがってプラグインを有効化した直後など、閲覧履歴のデータが少ない状態では良い結果は得られません。

そのためデータ数によらない提案方法である

  • 記事の類似度
  • 新着順
  • ランダム

などの方法を併用する必要があります。

上記のデメリットはありますが、ユーザーの行動に基づいたレコメンデーションであるためより確実にオススメすべき記事を提案することができます。

類似したプラグインに「Where did they go from here」というものがあります。

Show "Readers who viewed this page, also viewed" links on your page. Much like Amazon.com's product pages.

確かにユーザーの行動に基づいたレコメンドではありますが、直近のアクセス履歴を表示するだけであるため、提案されるものには統計学的な根拠がありません。

開発したプラグインではJaccard係数を用いた協調フィルタリングによって提案を行います。

Jaccard係数や協調フィルタリングの詳細は以下をご覧ください。

インストール方法

公式ディレクトリに登録してあるため、プラグインの新着追加画面から検索できます。

「cfiltering」と検索するとヒットします。

cfiltering4

「今すぐインストール」ボタンでインストールし、有効化します。

cfiltering5

Simplicity2のカスタマイズ

こちらの記事で紹介した方法を利用します。

【Simplicity2】関連記事をより関連したものにする方法【カスタマイズ】
以前STINGER7を使用していた時の内容のSimplicity2版です。 STINGER7は同じカテゴリーからランダムで5つの記事を表示しますが、Simplicity2もほぼ同様で、同...
ここで説明する内容は直接本番環境で行わないほうが無難です。
一度ローカル環境で確かめた上で反映を行うなどの手順を踏んでください。

以下は「関連記事表示タイプ」が「デフォルト」の場合の例です。

関連記事表示タイプの設定はカスタマイズの「レイアウト(投稿・固定ページ)」から行います。

「サムネイル3列」または「サムネイル4列」を選択している場合は「get_template_part_related-entries」を「get_template_part_related-entries-thumbnail」に置き換えます。

上記のコードを子テーマのfunctions.phpなどに記述します。

設定されたデータ数以上のデータが存在する場合にcf_get_postsは関連記事の配列を返します。

データが十分に存在せずcf_get_postsの返り値が空の場合は、Simplicity2のデフォルトの動作である「同じカテゴリーまたは同じタグの記事をランダムに取得する」という動作になります。

新着を混ぜてみる

前述のコードは同時にアクセスされることが多い記事を返すため、例えば新規投稿した場合には、しばらくして同時にアクセスされたデータが溜まるまで、この記事が他のどの記事の関連記事にも入ることはありません。

そこでここでは新着記事を混ぜて無理やり表示させる方法を紹介します。

先ほどのコードに少し追加して、関連記事の2番目に新着記事を入れてみます。

新着記事を1つ検索し存在した場合、それが関連記事のトップでない場合に2番目に挿入しています。

まとめ

ユーザーの行動をもとにしたレコメンデーションプラグインの紹介を行いました。

ちゃんとしたオススメを表示したいと思っている方は是非使用を検討してみてください。