LoginSignup
16
16

More than 5 years have passed since last update.

wordpressの投稿のデータを2次利用するときに知っておくと便利なデータベース構造

Posted at

wordpressで作られた投稿が入っているデータベースを、wordpressを介さずに2次利用したい要件があったので、wordpressのDBの設計についていろいろ調べました。

投稿が入っているテーブル

以下、wordpressのインストールのときの、DBのプレフィックスがデフォルトの"wp_"である事を前提に進めます。

なんと、投稿の本文とそれに入っている画像データは、wp_postsという一緒のテーブルに入っているます!

mysql> SHOW COLUMNS FROM wp_posts

の結果はこちら。

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 MUL NULL
post_title text NO MUL 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(20) 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 text 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

いろいろありますが、ポイントは、post_typeで投稿が分かれているところ。
投稿の本文…post
写真…attachment
という情報が入っているので、それで条件指定してSELECTしないといけません。
URLは、guidに入っています。
post_parentというのがあり、これがattachmentの場合、wp_postsのidと関連付けられているので、添付されている画像データのSELECTの際にはこのidをキーに検索します。

ただ、投稿のサムネイル画像を別に取りたいという要求があったとします。この時、使いたいのがwp_postmetaテーブル。wp_postmetaのカラムにmeta_keyとpost_idというのがあり、このmeta_keyに_thumbnail_idというキーがあり、meta_valueにwp_postsのidが入っています。

要件によって使い分けられそうです。

参考サイト:
WordPress wp_posts データ、画像データに関しての覚書き
WordPressのRSS配信が全文表示できない!記事をそのまま表示させるには

16
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
16