Webは用いる人のリテラシーで決まる 文学部卒・30代でエンジニアに転向した私の業界裏話や技術ノート
Twitter Facebook
TOP > BLOG > IT記事

WordPressで記事一覧とアイキャッチ画像をmysqlから取得するエンジニア向け

早川朋孝 早川朋孝
Webエンジニア
業界15年
WordPress

レコメンドエンジンをワードプレスに実装するにあたり、今まで投稿した記事の一覧を用意する必要があるのだけれど、単純なデータ取得が調べると意外と面倒で、結局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で調べたらあっさり解決しました。

このブログを書いてる人
早川 朋孝

業界15年のウェブエンジニアです。文学部卒で20代はSEO、アクセス解析などフロントの運用を中心に経験しましたが、30代のある時、ひょんなことから一人情シスのような状況を経験することになり、流れでそのままエンジニアに転向しました。プログラムやサーバー管理、数学の勉強などをしなおして、いまではWebのことはフロントからバックエンドまでなんでもできます。

本が好きで月140時間は読書します。このブログではWeb業界で経験してきた業界の裏側、読書で学んだこと、技術ノートなどを書きます。ネコ好きなタバコ嫌いで、明治学院フランス文学科卒。

facebookへ
PAGE TOP