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

Simplicityの私的なカスタマイズとして、関連記事表示機能にカスタム投稿タイプを追加する方法

私はプログラマーでもないので必死にプラグインを探して結局YARPPにカスタム投稿タイプを追加して使用しようかと思ったのですが、せっかくSimplicityに関連記事の機能があり、表示方法もいいし、それを使えばテーマの中で同じようなデザインで表現できるのでコードとにらめっこしながらカスタマイズしてみました。

を紹介しました。複数のカスタム投稿タイプを使っているサイトではこれをやれば十分と思ったのですが、ちょっと欲が出てきました。
「もう少し精度の高い関連情報が表示できないか?」
関連度を計算して関連記事を表示するプラグインの代表的なものに「YARPP」がありますが、できれば同じような機能でありながらSimplicityの関連記事表示機能の中で実現できないかなぁ・・・なんて。

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

使うのは、アクセスされたページの履歴を記録していく「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
・・・というような表示がずらーっと並んでいます。何もない場合には作者サイトを見て対処してくださいね

Simplicityへの反映

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の記述を変更・追加する方法を紹介します。

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

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

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

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

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

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

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

  1. ダッシュボードの「CFiltering」をクリックすると設定画面が開きます
  2. リストの中に「有効な投稿タイプ。複数ある場合はコンマで区切って入力します 」という項目を見つけます
  3. 項目の右側の窓にアクセス履歴を記録する投稿タイプを追加します
  4. ※「post(投稿)」も追加する必要があります。複数ある場合は「post,page,custom」のように「,」で区切ります
    ※投稿タイプはスラグ名を入力します
    ※結構な数のカスタム投稿タイプを登録しましたが問題ありませんでした

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

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

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

で確認できます。

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

今までは「Where did they go from here」

「Where did they go from here」は一般的に言われる関連記事を表示するプラグインではなく、Amazonなどの通販サイトのページ末尾に必ずある「この商品をチェックした人はこんな商品もチェックしています」を記事や固定ページ、カスタム投稿タイプへ追加できるプラグインです。実際に訪問者が見たページの軌跡を記録して表示するため、カテゴリーやタグを元にした関連記事よりも確度の高い内部リンクが作成できます。

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

トップへ戻る