WordPressで、MySQLのデータベースに直接、記事を投稿して、それをカテゴリーに紐づけたいと思います。
そして、さらにアイキャッチ画像、サムネイル画像と紐づけたいと思います。
目次
WordPressのデータベースのテーブル一覧
WordPressのデータベースのテーブルはシンプルです。
テーブル名 | 保存されるデータ |
---|---|
wp_posts | 投稿・固定ページ・メディア・カスタムメニュー・カスタム投稿・リビジョンなどの投稿関連のデータが保存される。 |
wp_postmeta | wp_posts用のメタデータが保存される。 |
wp_terms | カテゴリーやタグ、カスタム分類などのターム情報が保存される。 |
wp_term_relationships | タームと投稿などを関連づけるデータが保存される。 |
wp_term_taxonomy | タームと分類を関連づけるデータが保存される。 |
wp_users | ユーザー情報が保存される。 |
wp_usermeta | ユーザーのメタデータが保存される。 |
wp_comments | コメントが保存される。 |
wp_commentmeta | コメントのメタデータが保存される。 |
wp_options | 様々な設定情報が保存される。主に管理画面の【設定】で入力したデータなど。 |
wp_links | リンク関連のデータが保存される。 |
この中で、投稿に関係するのは、ほぼ wp_posts だけです。
WordPressで記事を投稿する際のデータベースとの関連
WordPressに記事を投稿する際のデータベース、テーブルの動きは以下の通りです。
まず、「wp_posts」テーブルにinsertします。
カラム名 | 値 |
---|---|
post_author | 作者 |
post_date | 投稿時刻(現在時刻) |
post_date_gmt | 投稿時刻 |
post_content | 本文 |
post_title | タイトル |
post_name | タイトル |
post_modified | 投稿時刻(現在時刻) |
post_modified_gmt | 投稿時刻(現在時刻)のUTC時間 |
guid | 空白 |
次に、カテゴリへの追加ですが、
まず、「wp_term_relationships」テーブルにinsertします。
カラム名 | 値 |
---|---|
object_id | wp_postsのid |
term_taxonomy_id | カテゴリーID |
term_order | 0 |
ちなみに、タグもカテゴリーと同じwp_term_relationshipsを使います。
つまり、カテゴリーとタグではテーブル上は違いはありません。
タグのIDを指定すれば、それはタグとして扱われます。
次に、以下の方法でカテゴリーに属する記事数を更新します。
カテゴリーIDで、「wp_term_taxonomy」を更新します。
カラム名 | 値 |
---|---|
count | カテゴリーに属する件数 |
ここまでの処理を実際にやってみます。
WordPressのDBに直接、コンテンツをインサートする方法
以下のように、insertすると、以下のことが可能になります。
WordPressのDBに直接、コンテンツを入れて、かつ、それをカテゴリと紐づける。
さらにアイキャッチ画像 (Featured Image、サムネイル画像) と紐づける。
1 2 3 4 5 6 7 8 |
MySQL > INSERT INTO wp_posts (post_title,post_content,post_name,post_date,post_date_gmt,post_modified,post_modified_gmt,post_author,post_status) VALUES ('title','text','post_name',now(),now(),now(),now(),1,'publish'); MySQL > INSERT INTO wp_term_relationships (object_id,term_taxonomy_id) VALUES ((SELECT MAX(id) FROM wp_posts), category_id); MySQL > INSERT INTO wp_postmeta (meta_value, meta_key, post_id) VALUES (post_id_of_image, '_thumbnail_id', (SELECT MAX(id) FROM wp_posts)); |
insertした後、直近のユニークIDを取得する方法ですが、
@@IDENTITYを使うと、直前の挿入したテーブルのユニークIDを取得できます。
これを使うと、直近の INSERT 後に、更新したテーブルのユニークIDを取得することができるので便利です。
ただし、@@IDENTITYは、INSERT直後のユニークIDなので、2回 INSERTすると書き換わりえます。
そのため、ここでは、カテゴリおよび、サムネイルを紐づけるために、SELECT MAX(id) FROM wp_posts を使うとよいでしょう。
WordPressのおすすめ本
↓WordPressのおすすめ本はコチラ
コメント