レコメンドエンジンをワードプレスに実装するにあたり、今まで投稿した記事の一覧を用意する必要があるのだけれど、単純なデータ取得が調べると意外と面倒で、結局SQLで解決しました。これはその備忘録として書いておきます。
投稿した記事と画像はwp_postsに保存されている
ワードプレスのmysqlにログインすると色々なtableがあるが、wp_postsというtableが投稿した記事のデータだろうことは簡単に分かる。しかしこのtableには投稿記事以外にも固定ページの情報や画像情報まで登録されている。私の場合は100記事程度しか投稿していないのにcountすると673もあったのはそういう理由だ。したがって以下のように絞る。
>select id,post_title, post_date,post_name, post_status, guid, post_type from wp_posts where post_status = ‘publish’ and post_type = ‘post’ limit 30;
この通りである必要はまったくないが、公開ステータスは「publish」、post_typeは「post」にするのがポイントで、とりあえず30件くらいに絞っておく。投稿数が多い人は制限をかけないととんでもないことになります。
wp_postmetaにアイキャッチ画像の情報が登録されている
次にwp_postmetaというtableについても把握しておく必要がある。投稿記事のアイキャッチ画像として保存した内容はこのtableに保存されているからだ。wp_postmetaのmeta_keyが「_thumbnail_id」であればそれはアイキャッチ画像として設定されているという意味だ。そしてpost_idが記事の投稿IDである。以下がその例です。
+———+———+—————+————+
| meta_id | post_id | meta_key | meta_value |
+———+———+—————+————+
| 127 | 52 | _thumbnail_id | 110 |
| 154 | 118 | _thumbnail_id | 120 |
| 181 | 112 | _thumbnail_id | 129 |
| meta_id | post_id | meta_key | meta_value |
+———+———+—————+————+
| 127 | 52 | _thumbnail_id | 110 |
| 154 | 118 | _thumbnail_id | 120 |
| 181 | 112 | _thumbnail_id | 129 |
>select post_id, meta_key, meta_value from wp_postmeta where meta_key = ‘_thumbnail_id’
このおおまかな仕様さえ分かってしまえば、エンジニアであればあとはいかようにもなりましょう。自分の目的はPHPだけ見ていても解決しそうになかったので、てっとりはやくSQLで調べたらあっさり解決しました。