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

WordPressで記事一覧とアイキャッチ画像をmysqlから取得する

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

レコメンドエンジンをワードプレスに実装するにあたり、今まで投稿した記事の一覧を用意する必要があるのだけれど、単純なデータ取得が調べると意外と面倒で、結局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 |
>select post_id, meta_key, meta_value from wp_postmeta where meta_key = ‘_thumbnail_id’

このおおまかな仕様さえ分かってしまえば、エンジニアであればあとはいかようにもなりましょう。自分の目的はPHPだけ見ていても解決しそうになかったので、てっとりはやくSQLで調べたらあっさり解決しました。

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