Webは用いる人のリテラシーで決まる ウェブ運用と開発現場を経験したエンジニアのTIPS
TOP > BLOG > IT記事

ワードプレスにプラグインを使わずおすすめ記事を表示させる方法の概略

早川朋孝 早川朋孝
EC専門のSE

WordPressに管理者のおすすめ記事を恣意的に設定して表示させる方法を案内する。これを実装するにはいろいろな方法があるが、今回紹介する方法の主な要件は以下の通り。なおこの記事はSQLが分かる人を前提にしている。

  • プラグインは使わない
  • データベースに新しいtableを追加する

プラグインを使わないのは、私がそこまでWordPressに詳しくなく、障害に備えてあまりプラグインを使わず、仕様を把握した状態で運用したいから。

手順

  1. 要件定義(そこまで大げさなものではないけど)
  2. WordPressのデータ構造を把握する
  3. wp_postsにおすすめフラグを追加する
  4. アクセス解析でおすすめ記事を選ぶ
  5. 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とタイトルを把握する。記事数が多い場合はてきとうに表示数を制限する。

> SELECT id, post_title, recommend FROM wp_posts WHERE post_type=”post” LIMIT xx

例えばidの記事に5を設定する場合。

> UPDATE wp_posts SET recommend=5 WHERE id=10;

WordPressに実装する

あとはWPに実装するだけ。使っているWordPressの運用に合わせてコードを書く。今回は表示されている記事と同じtagに絞っておすすめ記事を表示させることにしたので、記事中でtagを出力し、それをPHPの変数に入れてSQL文に渡す処理をいれた。

下記SQL文の最後のほうに絞り込みでtarget_tagという変数を入れてある。それにしても簡単な処理なのに長い記述ですね、SQLは。私はあまりSQL好きではないです。

$sql = ‘SELECT DISTINCT WP.post_title, WT.name, WP.post_date, WP.id, WTT.description FROM wp_posts as WP INNER JOIN wp_term_relationships AS WTR ON WP.id = WTR.object_id INNER JOIN wp_term_taxonomy AS WTT ON WTR.term_taxonomy_id = WTT.term_taxonomy_id INNER JOIN wp_terms AS WT ON WTT.term_id = WT.term_id WHERE NOT recommend=\’null\’ && post_type=\’post\’ && post_status=\’publish\’ && WTR.term_taxonomy_id=\”.$target_tag.’\”;

以上の方法で実装したおすすめ記事は、この記事を含めこのサイト内のすべて投稿記事にtagに応じて表示されている。以上で手動で設定するおすすめ記事のWPへの実装方法の概要を終わる。

次はpythonを使ってもう少し本格的なレコメンドエンジンをWordPressに搭載する方法を案内する。ECサイトなどでよく見られる「この商品を買った人はこの商品も買ってます」というアレ、AIレコメンドエンジンね!

×

EC業務アプリ開発の相談にのります

EC専門のSEが楽天やAmazonのAPIで業務を楽にするアプリ開発を承ります >詳細はこちら

ECのAPI連携をサポート > 詳細はこちら
このブログを書いてる人
早川 朋孝 EC専門のSE
IT業界歴20年のエンジニアです。ネットショップ勤務で苦労した経験から、EC・ネットショップ事業者に向けて、バックオフィス業務の自動化・効率化を提案するSEをしています。
APIを使用したEC業務アプリ開発承ります
API連携の相談にのります
PAGE TOP