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

公開日: 更新日: Simplicity
Knowledge Base Wordpress 設定




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;
    }
  }
});
【注意】コードをコピーして使用する前に必ずお読みください

この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

使用については自己責任でお願いします

コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

その場合には以下の方法で修正を行ってみてください

  1. コードの中に全角の記号が入っていませんか?
  2. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. 上のようなことがないのに更新できない
  6. 特に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。

コードを転載する場合には

ご自身のサイトで当ページのコードを転載される場合には必ず当ページへのリンクを入れていただきますようお願いいたします

このコードを子テーマの場合は子テーマに、親テーマの場合は親テーマの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」

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

いつでもご相談・サイトカスタマイズの依頼を受け付けています

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

※一度もココナラを使ったことがない方はココナラへの無料登録が必要です。こちらから登録後、上のリンクをクリックする、またはココナラトップページから「ひまあーと」を検索してお問い合わせください。


【スポンサーリンク】