WordPressに管理者のおすすめ記事を恣意的に設定して表示させる方法を案内する。これを実装するにはいろいろな方法があるが、今回紹介する方法の主な要件は以下の通り。なおこの記事はSQLが分かる人を前提にしている。
- プラグインは使わない
- データベースに新しいtableを追加する
プラグインを使わないのは、私がそこまでWordPressに詳しくなく、障害に備えてあまりプラグインを使わず、仕様を把握した状態で運用したいから。
手順
- 要件定義(そこまで大げさなものではないけど)
- WordPressのデータ構造を把握する
- wp_postsにおすすめフラグを追加する
- アクセス解析でおすすめ記事を選ぶ
- WordPressに実装する
要件定義
今回はデータベースに新しくtableを追加する方法にしたが、他にもカスタムフィールドでおすすめ記事を設定する方法もある。この方法なら管理画面からできるので簡単かもしれない。自分の目的やシステム負荷を考慮し、設計しよう。
WordPressのデータ構造を把握する
これは超重要ですぞ。上述の通り私はそこまでWordPressに詳しくなかっただが、おすすめ記事を表示するにあたりデータ構造をしっかり把握した。調べてみればWordPressのデータのリレーションはそこまで複雑でもなく、見る人がみれば分かるだろう、というレベル。それでも把握するにはエクセルにデータ定義をまとめるなどしたけど。こういう作業を面倒がると、ウェブアプリは実装できない。
wp_postsにおすすめフラグを追加する
wp_postsにrecommendというカラムを追加した。カラムを1つ追加するだけなので一瞬で終わる。データタイプは小さい桁数のsmallintを設定した。入力はもちろん任意にしておく。そうでないと全ての記事のデータ入力が必要となり悲劇なので。
+———————–+———————+——+—–+———————+—————-+
| Field | Type | Null | Key | Default | Extra |
+———————–+———————+——+—–+———————+—————-+
| ID | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| post_author | bigint(20) unsigned | NO | MUL | 0 | |
| post_date | datetime | NO | | 0000-00-00 00:00:00 | |
| post_date_gmt | datetime | NO | | 0000-00-00 00:00:00 | |
| post_content | longtext | NO | | NULL | |
| post_title | text | NO | | NULL | |
| post_excerpt | text | NO | | NULL | |
| post_status | varchar(20) | NO | | publish | |
| comment_status | varchar(20) | NO | | open | |
| ping_status | varchar(20) | NO | | open | |
| post_password | varchar(255) | NO | | | |
| post_name | varchar(200) | NO | MUL | | |
| to_ping | text | NO | | NULL | |
| pinged | text | NO | | NULL | |
| post_modified | datetime | NO | | 0000-00-00 00:00:00 | |
| post_modified_gmt | datetime | NO | | 0000-00-00 00:00:00 | |
| post_content_filtered | longtext | NO | | NULL | |
| post_parent | bigint(20) unsigned | NO | MUL | 0 | |
| guid | varchar(255) | NO | | | |
| menu_order | int(11) | NO | | 0 | |
| post_type | varchar(20) | NO | MUL | post | |
| post_mime_type | varchar(100) | NO | | | |
| comment_count | bigint(20) | NO | | 0 | |
| recommend | smallint(6) | YES | | NULL | |
+———————–+———————+——+—–+———————+—————-+
アクセス解析でおすすめ記事を選ぶ
すでにおすすめしたい記事があるのなら問題ないが、google analyticsなどのアクセス解析でどんな記事が読まれているのか、おおまかな傾向くらいは把握したほうがいい。記事を選んだら、新たに追加したカラムrecommendに順位を設定する。
今回はあくまでSQLで設定するので、まず投稿記事の一覧を取得し、idとタイトルを把握する。記事数が多い場合はてきとうに表示数を制限する。
例えばidの記事に5を設定する場合。
WordPressに実装する
あとはWPに実装するだけ。使っているWordPressの運用に合わせてコードを書く。今回は表示されている記事と同じtagに絞っておすすめ記事を表示させることにしたので、記事中でtagを出力し、それをPHPの変数に入れてSQL文に渡す処理をいれた。
下記SQL文の最後のほうに絞り込みでtarget_tagという変数を入れてある。それにしても簡単な処理なのに長い記述ですね、SQLは。私はあまりSQL好きではないです。
以上の方法で実装したおすすめ記事は、この記事を含めこのサイト内のすべて投稿記事にtagに応じて表示されている。以上で手動で設定するおすすめ記事のWPへの実装方法の概要を終わる。
次はpythonを使ってもう少し本格的なレコメンドエンジンをWordPressに搭載する方法を案内する。ECサイトなどでよく見られる「この商品を買った人はこの商品も買ってます」というアレ、AIレコメンドエンジンね!