Simplicityの本文下には、関連記事が表示されています。
ただ、この関連記事は、アルゴリズム的に言えば、以下のような挙動になっています。
同一のカテゴリの中から指定した数だけランダムで関連記事を表示する
これだと、「同一のカテゴリー」という関連性はあるものの、それ以外はランダム表示です。表示される記事の関連性は、データに基づいておらず、偶然に頼る部分が大きいです。
ただ、先日とあるプラグインを使用して、精度の高い関連記事を表示できるようになったので、そのやり方を紹介したいと思います。
使用するプラグイン
関連記事の関連性を高めるために使用するプラグインは、TechNoteさんが開発されたCFilteringというプラグインです。
WordPressの公式ディレクトリにも掲載されています。
CFilteringプラグインとは
このプラグイン使用することで、「ユーザーの閲覧行動」から、統計的に関連性の高い記事を算出することができます。
例えば、Amazonなどで商品を買うと、「この商品を買った人はこんな商品も買っています」と出ますよね?
こういった推薦商品と似たような感じで、ブログでも「この記事を読んでいる人は、こんな記事も読んでいます」という機能を実現することができます。
CFilteringプラグインを導入すると
CFilteringをインストールすると、投稿一覧ページなどに「レコメンデーション」項目が追加され「表示」ボタンが表示されます。
例えば、Simplicityの外部リンクブログカードの設定方法という記事のレコメンデーションを見てみるとフロンカード関係の記事が上位に出てきます。
こういった、閲覧ユーザー履歴の統計結果から算出された関連記事を表示させることで、Simplicityの関連記事をより関連性の高いものに紐付けることができます。
CFilteringをインストールしてしばらく待たないと閲覧履歴データが貯まりません。ですので、インストール後暫くの間は、データがたまるのを待つ必要があります。
Simplicityで関連性の高い関連記事を表示する方法
CFilteringの解説ページにも、やり方は書かれているのですが、一応方法も説明しておきます。
「統計に基づいた関連性の高い関連記事表示」と聞くと、なんだか難しそうに見えますが、やることといえば以下の2点で非常に簡単です。
- CFilteringのインストール
- カスタマイズ用のコードをfunctions.phpにコピペ(Simplicity2.3.0d以降は不要)
僕が行った、作業時間といえば、1分もかかっていないかも。
CFilteringのインストール
まずは、プラグインをインストールします。
プラグインのインストールは、Wordpress管理画面から「プラグイン → 新規追加」を選択します。
「プラグインを追加」画面で検索フォームに「CFiltering」と入力するとCFilteringプラグインが表示されるので「今すぐインストール」ボタンを押してください。
これでインストールは完了です。
Simplicity2.3.0d以降であれば、CFilteringプラグインをインストールさえすれば、「精度高い関連記事」機能が適用されるようになっています。以下のコードのコピペ作業は不要です。
カスタマイズ用のコードをfunctions.phpにコピペ
Simplicity2.3.0d未満であれば、以下の作業が必要です。
Simplicity2.3.0d以上を使用しつつ下記コードを追加している場合はfunctions.phpから削除をお勧めします(そのままでもエラーなどは出ないとは思いますが)。
あとは、Simplicityの子テーマのfunctions.phpに以下のコードをコピペします。
add_action('get_template_part_related-entries', function () { if (function_exists('cf_get_posts')) { $posts = cf_get_posts(); if (count($posts) > 0) { $pre_get_posts = function ($query) use (&$pre_get_posts, $posts) { $num = $query->query_vars['posts_per_page']; $query->set('p', -1); $the_posts = function () use (&$the_posts, $posts, $num) { remove_action('the_posts', $the_posts); return array_slice($posts, 0, $num); }; add_action('the_posts', $the_posts); remove_action('pre_get_posts', $pre_get_posts); }; add_action('pre_get_posts', $pre_get_posts); return; } } });
その他の詳しい設定方法や、仕様などについては以下を参照してください。
動作確認
あとは動作確認です。
ただ動作確認を行うには、CFilteringのデータが貯まっていない場合は、数日~数週間待ってデータを蓄積させる必要があるかと思います。
まずは、任意の記事のレコメンデーション表示ボタンを押します。
すると、データが貯まっていれば以下のように関連度が高い順に一覧表示されます。
あとは、実際のページもブラウザで表示し、関連記事が同じ順番になっていればカスタマイズ成功です。
詳しく見てみると、表示したページはSimplicityの基本的な文章装飾スタイルを使う方法まとめなんですが、関連記事も「文章装飾」系の記事が、ちゃんと上位に表示されています。素晴らしすぎる。
もう一つSimplicity2.2.9のバージョンアップ記事の関連記事を見てみると以下。
Simplicity2.2.9の直近のバージョンアップ記事が表示されていたり、アップデート方法の記事が表示されています。おそらく、新しいバージョンが出たらアップデート方法を知りたくなるので、このような関連記事表示になっているのでしょう。
かなり関連度が高い記事が表示されているのがわかります。
まとめ
というわけで、こんな感じで結構簡単に関連度の高い関連記事を表示させることができます。
今回のカスタマイズを行わなくても、そういったプラグインを使えば、関連の高い関連記事は表示させることができると思います。
けれど、今回の方法の良いところは、「Simplicity関連記事のデザインはそのままに、表示される記事がより関連度の高いものになる」ということです。
例えば、関連記事表示プラグインWordPress Related Postsの場合は、本文下に追加する形で関連記事が表示されます。けれど、今回の方法を使えば、「Simplicityデザインに親和性も高く精度の高い関連記事を表示する」ということができます。
もし、Simplicityを使っていて「もっと関連性の高い関連記事を表示したいな…」とお考えの場合は、TechNoteさん作成のCFilteringを是非試してみてください。
コメント
わいひらさん、はじめまして
このプラグインを使用しようとしたところ、2018年1月26日にプラグイン公開をやめてしまいダウンロードできなくなってしまいました。
代替の方法があればまた記事にしていただきたいです。
はじめまして。
代替というかプラグインのダウンロードは、自己責任になりますが、こちらからできます。
WordPress×CocoonでもCFilteringを使う ? 出不精の横好き
やり方は多分同じかと思います。