WordPressの投稿記事データ

WordPressの投稿記事は、MySQL(MariaDB)にどうやって格納されているのでしょう。
mysqlコマンドを使ってデータベースを確認してみます。

$ mysql -uユーザ名 -p

パスワードを入力すれば、以下のようなプロンプトが表示されます。

mysql>

管理されているデータベースを表示してみましょう。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| wp                 |
+--------------------+
4 rows in set (0.01 sec) 

この例の場合、wpというのがワードプレス用のデータベースです。
次にwpにあるテーブルを確認してみます。

mysql> use wp;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-----------------------+
| Tables_in_wp          |
+-----------------------+
| wp_commentmeta        |
| wp_comments           |
| wp_links              |
| wp_options            |
| wp_postmeta           |
| wp_posts              |
| wp_term_relationships |
| wp_term_taxonomy      |
| wp_termmeta           |
| wp_terms              |
| wp_usermeta           |
| wp_users              |
+-----------------------+
12 rows in set (0.00 sec)

投稿記事のテーブルはwp_postsです。
どのようなフィールドがあるか見てみましょう。
(右の方は表示をカットしています)

mysql> show columns from wp_posts;
+-----------------------+---------------------+------+-----+-(右方省略)
| Field                 | Type                | Null | Key |
+-----------------------+---------------------+------+-----+-
| ID                    | bigint(20) unsigned | NO   | PRI |
| post_author           | bigint(20) unsigned | NO   | MUL |
| post_date             | datetime            | NO   |     |
| post_date_gmt         | datetime            | NO   |     |
| post_content          | longtext            | NO   |     |
| post_title            | text                | NO   |     |
| post_excerpt          | text                | NO   |     |
| post_status           | varchar(20)         | NO   |     |
| comment_status        | varchar(20)         | NO   |     |
| ping_status           | varchar(20)         | NO   |     |
| post_password         | varchar(20)         | NO   |     |
| post_name             | varchar(200)        | NO   | MUL |
| to_ping               | text                | NO   |     |
| pinged                | text                | NO   |     |
| post_modified         | datetime            | NO   |     |
| post_modified_gmt     | datetime            | NO   |     |
| post_content_filtered | longtext            | NO   |     |
| post_parent           | bigint(20) unsigned | NO   | MUL |
| guid                  | varchar(255)        | NO   |     |
| menu_order            | int(11)             | NO   |     |
| post_type             | varchar(20)         | NO   | MUL |
| post_mime_type        | varchar(100)        | NO   |     |
| comment_count         | bigint(20)          | NO   |     |
+-----------------------+---------------------+------+-----+-
23 rows in set (0.00 sec)

さあ、投稿記事の一覧を表示してみます。
SQLのselect文を使います。
post_titleが投稿記事のタイトルっぽいので、select文でpost_titleを指定します。

mysql> select post_title from wp_posts;
+------------------------------------------------------+
| post_title                                           |
+------------------------------------------------------+
| Debian8+MariaDB+Apache2+WordPress                    |
| サンプルページ                                         |
| 画像編集ソフト GIMP                                   |
| ホーム                                               |
|                                                      |
| 火曜のよるはダメ恋だ                                  |
| ブログ(WordPress)をバックアップ                       |
| crontabで自動バックアップ                             |
| 自動下書き                                              |
| Debian8+MariaDB+Apache2+WordPress                      |
| 画像編集ソフト GIMP                                     |
| 火曜のよるはダメ恋だ                                    |
| ブログ(WordPress)をバックアップ                         |
| crontabで自動バックアップ                               |
| ストリームエディタ                                      |
| ストリームエディタ                                      |
| ストリームエディタ                                      |
| ストリームエディタ                                      |
| ストリームエディタ                                      |
| linuxでプログラムのインストール                          |
| linuxでプログラムのインストール                          |
| linuxでプログラムのインストール                          |
| ソースからビルド、インストール                           |
| linuxでプログラムをソースからビルド、インストール         |
| ソースからビルド、インストール                           |
| ソースからビルド、インストール                           |
| マニュアル(man)のセクション番号                          |
| マニュアル(man)のセクション番号                          |
| マニュアル(man)の素材(テキスト)はどこに?                 |
| マニュアル(man)の素材(テキスト)はどこに?                 |
| 花文字コマンド                                          |
| 花文字コマンド                                          |
| 花文字コマンド                                          |
| マニュアル(man)の素材(テキスト)はどこに?                 |
| マニュアル(man)のセクション番号                          |
| ソースからビルド、インストール                           |
| ソースからビルド、インストール                           |
| linuxでプログラムのインストール                          |
| ストリームエディタ                                      |
| crontabで自動バックアップ                               |
| crontabで自動バックアップ                               |
| headコマンド                                           |
| headコマンド                                           |
| headコマンド                                           |
| headコマンド                                           |
| /usr/src/linuxの謎                                    |
| /usr/src/linuxの謎                                    |
| sedコマンドをheadの代わりに使う                         |
| sedコマンドをheadの代わりに使う                         |
+------------------------------------------------------+
49 rows in set (0.00 sec)

ん!?どうしたことでしょう。タイトルが重複して表示されました。

WordPressの便利な履歴保存機能である、リビジョン機能が働いているからです。

select文で投稿記事のステータスも一緒に抽出してみましょう。

mysql> select post_status,post_title from wp_posts;
+-------------+--------------------------------------------------+
| post_status | post_title                                       |
+-------------+--------------------------------------------------+
| publish     | Debian8+MariaDB+Apache2+WordPress                |
| trash       | サンプルページ                                   |
| publish     | 画像編集ソフト GIMP                              |
| draft       | ホーム                                           |
| draft       |                                                  |
| publish     | 火曜のよるはダメ恋だ                             |
| publish     | ブログ(WordPress)をバックアップ                  |
| publish     | crontabで自動バックアップ                        |
| auto-draft  | 自動下書き                                       |
| inherit     | Debian8+MariaDB+Apache2+WordPress                |
| inherit     | 画像編集ソフト GIMP                              |
| inherit     | 火曜のよるはダメ恋だ                             |
| inherit     | ブログ(WordPress)をバックアップ                  |
| inherit     | crontabで自動バックアップ                        |
| publish     | ストリームエディタ                               |
| inherit     | ストリームエディタ                               |
| inherit     | ストリームエディタ                               |
| inherit     | ストリームエディタ                               |
| inherit     | ストリームエディタ                               |
| publish     | linuxでプログラムのインストール                  |
| inherit     | linuxでプログラムのインストール                  |
| inherit     | linuxでプログラムのインストール                  |
| publish     | ソースからビルド、インストール                   |
| inherit     | linuxでプログラムをソースからビルド、インストール|
| inherit     | ソースからビルド、インストール                   |
| inherit     | ソースからビルド、インストール                   |
| publish     | マニュアル(man)のセクション番号                  |
| inherit     | マニュアル(man)のセクション番号                  |
| publish     | マニュアル(man)の素材(テキスト)はどこに?        |
| inherit     | マニュアル(man)の素材(テキスト)はどこに?        |
| publish     | 花文字コマンド                                   |
| inherit     | 花文字コマンド                                   |
| inherit     | 花文字コマンド                                   |
| inherit     | マニュアル(man)の素材(テキスト)はどこに?        |
| inherit     | マニュアル(man)のセクション番号                  |
| inherit     | ソースからビルド、インストール                   |
| inherit     | ソースからビルド、インストール                   |
| inherit     | linuxでプログラムのインストール                  |
| inherit     | ストリームエディタ                               |
| inherit     | crontabで自動バックアップ                        |
| inherit     | crontabで自動バックアップ                        |
| publish     | headコマンド                                    |
| inherit     | headコマンド                                    |
| inherit     | headコマンド                                    |
| inherit     | headコマンド                                    |
| publish     | /usr/src/linuxの謎                               |
| inherit     | /usr/src/linuxの謎                               |
| publish     | sedコマンドをheadの代わりに使う                  |
| inherit     | sedコマンドをheadの代わりに使う                  |
+-------------+--------------------------------------------------+
49 rows in set (0.00 sec)


修正前の投稿記事はinheritというスタータスがつけられているようです。
修正後の最新である投稿記事はpublishがついています。

実験的にinherit状態のレコードだけ削除しようと思います。
whereでinherit状態のスタータスのみ指定して、delete文を使います。

mysql> delete from wp_posts where post_status="inherit";
Query OK, 31 rows affected (0.00 sec)

mysql> select post_status,post_title from wp_posts;
+-------------+------------------------------------------------------------+
| post_status | post_title                                                 |
+-------------+------------------------------------------------------------+
| publish     | Debian8+MariaDB+Apache2+WordPress                          |
| trash       | サンプルページ                                             |
| publish     | 画像編集ソフト GIMP                                        |
| draft       | ホーム                                                     |
| draft       |                                                            |
| publish     | 火曜のよるはダメ恋だ                                       |
| publish     | ブログ(WordPress)をバックアップ                            |
| publish     | crontabで自動バックアップ                                  |
| auto-draft  | 自動下書き                                                 |
| publish     | ストリームエディタ                                         |
| publish     | linuxでプログラムのインストール                            |
| publish     | ソースからビルド、インストール                             |
| publish     | マニュアル(man)のセクション番号                            |
| publish     | マニュアル(man)の素材(テキスト)はどこに?                  |
| publish     | 花文字コマンド                                             |
| publish     | headコマンド                                               |
| publish     | /usr/src/linuxの謎                                         |
| publish     | sedコマンドをheadの代わりに使う                            |
+-------------+------------------------------------------------------------+
18 rows in set (0.00 sec)

すっきりしました。
(実験で消しただけですので、十分な確認をせずにデータベースを操作消してはいけません。操作は自己責任で)

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA