WordPressのカスタマイズ方法やプラグインレビューを中心に、パソコン/動物/植物のことなどを紹介するホームページです
[Simplicity 2] Customize the theme related article display function (improve the accuracy of relevance)

【Simplicity2】テーマの関連記事表示機能のカスタマイズ(関連性の精度を上げる)

公開日:2016年10月22日 使い方など

Simplicity2の私的なカスタマイズとして、【Simplicity2】テーマの関連記事表示機能にカスタム投稿タイプを含める方法(自己流)を紹介しました。複数のカスタム投稿タイプを使っているサイトではこれをやれば十分と思ったのですが、ちょっと欲が出てきました。

「もう少し精度の高い関連情報が表示できないか?」

関連度を計算して関連記事を表示するプラグインの代表的なものに「YARPP」がありますが、できれば同じような機能でありながらSimplicity2の関連記事表示機能の中で実現できないかなぁ・・・なんて。

そうしたら、Simplicity2の作者様のサイトで紹介されていました。さすがです!!

Simplicity2でより精度の高い関連記事を表示するカスタマイズ方法

使うのは、アクセスされたページの履歴を記録していく「CFiltering」というプラグイン。訪問者がどんなページを見たかを記録していき、そのデータを関連記事に反映しようというものです。

早速やってみましたので自分用の備忘録を兼ねてここでも紹介させていただきます。

「CFiltering」プラグインのインストール

公式サイトcfilteringで公開されていますので、リンクから入手するか、プラグイン検索で「CFiltering」と入力してインストールします。

有効化するとチェックプログラムが動きますがひとまずはチェックさせておきます(これが何をしているかは不明・・・)。

きちんと動作していればダッシュボードの「CFiltering」→「ログ」を開いたときに
2016-09-27 14:52:02 end calc [elapsed time: 71.413993835449 ms]
2016-09-27 14:52:02 target count: 5
2016-09-27 14:52:02 start calc
・・・というような表示がずらーっと並んでいます。何もない場合には作者サイトを見て対処してくださいね

Simplicity2への反映

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;
}
}
});

このコードを子テーマの場合は子テーマに、親テーマの場合は親テーマのfunctions.phpへ挿入します(子テーマの使用をおすすめします)。functions.phpは重要なファイルですので面倒がらずに必ずバックアップ取りましょうね。

【WordPress】テーマの「functions.phpのバックアップ」って何ぞや??安全にfunctions.phpの記述を変更・追加する方法

上の「Simplicity2でより精度の高い関連記事を表示するカスタマイズ方法」では

Simplicity2.3.0d以上を使用しつつ下記コードを追加している場合はfunctions.phpから削除をお勧めします(そのままでもエラーなどは出ないとは思いますが)。

と書かれていたので、一応追記する必要のないバージョン2.3.0gを使って、子テーマへ挿入する方法を試してみましたが、追記してもエラーは出ませんでした(ただやっぱり環境によるので何とも言えませんね)。

これで「投稿」と「関連記事」と「CFiltering」の連携は完了

カスタム投稿タイプや固定ページを追加する

これではカスタム投稿タイプを使用している私のサイトでは完全に機能しないということで再度設定変更。

行うのは「CFiltering」の設定です。カスタム投稿タイプなどを追加する方法は以下の通り。

  1. ダッシュボードの「CFiltering」をクリックすると設定画面が開きます
  2. リストの中に「有効な投稿タイプ。複数ある場合はコンマで区切って入力します 」という項目を見つけます
  3. 項目の右側の窓にアクセス履歴を記録する投稿タイプを追加します

※「post(投稿)」も追加する必要があります。複数ある場合は「post,page,custom」のように「,」で区切ります
※投稿タイプはスラグ名を入力します
※結構な数のカスタム投稿タイプを登録しましたが問題ありませんでした

  1. 一番右下の「設定」をクリックして完了

追加したカスタム投稿タイプが記録対象になっているかは

  1. カスタム投稿タイプの投稿一覧を表示する
  2. 一覧の一番右に「レコメンデーション」という項目があればOK

設定が完了してから記録が開始されるので、関連記事へ反映されていくにはちょっと時間がかかりますが、楽しみに待ってみます。

今までは

「このページを見た方はこちらも見ています」を表示するプラグイン「Where did they go from here」

を使っていましたが、これでまた1つプラグインを外せますね。

WordPressのカスタマイズ・不具合対応などご相談ください

Wordpressのカスタマイズ、不具合解消のご相談はすべてココナラのダイレクトメッセージからお受けしております。まずはこちらのバナーからお気軽にお問い合わせください。