WordPress×CocoonでもCFilteringを使う

WordPress

WordPressブログに表示される関連記事は、同一のカテゴリやタグから記事が表示されます。CFilteringは訪問者の行動から記事間の関連度を統計的に計算し、その値によって「関連度が高い」として関連記事に記事を表示させてくれるプラグインです。

WordPressテーマ「Simplicity2」ではお世話になっていましたが、このたび「Cocoon」に変更しましたため、このテーマでもCFilteringが使えるようにしたいと思います。

CFilteringは訪問者の行動をサンプリングする処理上、DBの更新頻度が高いため、アクセス数に比例して動作負荷が大きくなります。また、現在プラグインの公開が停止されているため、WordPressのバージョンアップなど環境の変化によって突然使用できなくなる可能性があることに留意してください。
スポンサーリンク

プラグインの導入

CFilteringは現在公開されておらず、ダウンロードすることができませんが、GPLv2ライセンスとされていますのでここで再配布させて頂きたいと思います。ただし、プラグイン作者からの要望や状況によって再配布は予告無しで中止する場合があります。

動作にはPHP 5.4以上である必要があります。また、利用は自己責任でお願いします。

インストール

既にCFIlteringを導入されている方はそのままで問題ありません。

新しく導入される方は、下記どちらか一方の方法でインストールしてください。

  • プラグイン新規追加のページからプラグインのアップロードを利用してzipファイルをアップロードする
  • FTPクライアントなどを利用して、…\wp-content\pluginフォルダに放り込む

function.phpに追記

本題に入ります。CFilteringをCocoonで使うために、以下のコードをfunction.phpに追記してください。Simplicity2など他のテーマのときに追記していた方はその部分を削除した上で追記してください。

function.phpへの追記は、誤りがあった場合にサイトが表示できなくなることがありますのでFTPクライアントなどサーバー上のファイルを直接修正できるよう準備しておいてください。
//CFiltering
add_action('get_template_part_tmp/related-list', 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;
        }
    }
});

function.phpへの追記は、Cocoon子テーマフォルダのファイルを直接編集してアップロードするか、WordPress管理画面の 外観 > テーマの編集 > テーマのための関数(function.php) を開いて追記してください。

動作確認

以前からCFilteringを利用されていた方はそのときのデータによって関連記事が表示されますが、新規で導入された方は十分なデータが集まるまでの間、CFilteringによる関連記事の選出がされないので注意してください。

ほか、CFilteringプラグインについては解説記事がいくつかネットに転がっていますので、Google先生に訊いてみてください。

以上です。お疲れ様でした。

コメント