WordPress の構成一覧

## WordPressのデータベースのテーブル

WordPressでWebサイトを運営する上で、必要不可欠なのがデータベースです。  
普段特に意識せずに使っているWordPressのデータベースですが、構造を詳しく知っておくことで、カスタマイズがしやすくなります。  
WordPressのデータベースは以下の12テーブルから構成されています。（バージョン6.2.2時点）

| テーブル名 | 概要 |
| :---- | :---- |
| wp_commentmeta | コメントのメタ情報が格納されています。主にプラグインで使用されることが多いです。WordPressにデフォルトで入っているコメントスパム検知用プラグイン「Akismet」でも使われています |
| wp_comments | 投稿へのコメントを記録しています。コメント投稿者、メールアドレス、IP、日時、内容、承認状況、ユーザーエージェントなど様々な情報を記録しています |
| wp_links | リンク関連のデータを管理しています。一部プラグインで使用されています |
| wp_options | WordPress各種設定が保存されています。サイトURLやホームURL、サイト名などの基本情報から、一部プラグインの設定まで幅広く利用されています |
| wp_postmeta | 投稿のメタ情報が保存されています。カスタムフィールドやプラグインによって投稿に機能を追加する場合に使われます |
| wp_posts | WordPressの投稿・固定ページ・カスタム投稿全てこのテーブルに保存されています。著者、投稿日時、更新日時、タイトル、内容、公開状況、投稿タイプなどが保存されています |
| wp_termmeta | WordPress4.4から新たに追加されたテーブルです。プラグインや個別にカスタマイズする際に利用することができます |
| wp_terms | カテゴリやタグの名前とスラッグを保存しています |
| wp_term_relationships | 投稿とカテゴリ・タグを紐付けています。どの投稿がどういったカテゴリ・タグを持ってるかの情報が保存されています |
| wp_term_taxonomy | wp_termに保存さている語句がカテゴリなのか？タグなのか？といった情報を保存しています |
| wp_usermeta | WordPressユーザーのメタデータが格納されています。各ユーザーの紹介文や権限などの設定に使用されています |
| wp_users | WordPressユーザーの名前やパスワードが保存されています |

### wp_commentmeta
コメントのメタ情報が格納されています。主にプラグインで使用されることが多いです。WordPressにデフォルトで入っているコメントスパム検知用プラグイン「Akismet」でも使われています。
```
+------------+-----------------+------+-----+---------+----------------+
| Field      | Type            | Null | Key | Default | Extra          |
+------------+-----------------+------+-----+---------+----------------+
| meta_id    | bigint unsigned | NO   | PRI | NULL    | auto_increment |
| comment_id | bigint unsigned | NO   | MUL | 0       |                |
| meta_key   | varchar(255)    | YES  | MUL | NULL    |                |
| meta_value | longtext        | YES  |     | NULL    |                |
+------------+-----------------+------+-----+---------+----------------+
```

### wp_comments
投稿へのコメントを記録しています。コメント投稿者、メールアドレス、IP、日時、内容、承認状況、ユーザーエージェントなど様々な情報を記録しています。
```
+----------------------+-----------------+------+-----+---------------------+----------------+
| Field                | Type            | Null | Key | Default             | Extra          |
+----------------------+-----------------+------+-----+---------------------+----------------+
| comment_ID           | bigint unsigned | NO   | PRI | NULL                | auto_increment |
| comment_post_ID      | bigint unsigned | NO   | MUL | 0                   |                |
| comment_author       | tinytext        | NO   |     | NULL                |                |
| comment_author_email | varchar(100)    | NO   | MUL |                     |                |
| comment_author_url   | varchar(200)    | NO   |     |                     |                |
| comment_author_IP    | varchar(100)    | NO   |     |                     |                |
| comment_date         | datetime        | NO   |     | 0000-00-00 00:00:00 |                |
| comment_date_gmt     | datetime        | NO   | MUL | 0000-00-00 00:00:00 |                |
| comment_content      | text            | NO   |     | NULL                |                |
| comment_karma        | int             | NO   |     | 0                   |                |
| comment_approved     | varchar(20)     | NO   | MUL | 1                   |                |
| comment_agent        | varchar(255)    | NO   |     |                     |                |
| comment_type         | varchar(20)     | NO   |     | comment             |                |
| comment_parent       | bigint unsigned | NO   | MUL | 0                   |                |
| user_id              | bigint unsigned | NO   |     | 0                   |                |
+----------------------+-----------------+------+-----+---------------------+----------------+
```

### wp_links
投稿等の各種リンクが保存されているテーブルです。

| カラム名 | カラム型 | 概要 |
| :---- | :---- | :---- |
| link_id | bigint unsigned | リンク登録ごとに割り振られているID |
| linl_url | varchar(255) | ウェブサイトのURL |
| link_name | varchar(255) | リンク名 |
| link_image | varchar(255) | 画像のURL |
| link_target | varchar(25) | リンクのターゲット |
| link_description | varchar(255) | ディスクリプション |
| link_owner | bigint unsigned | 評価（評価を指す項目は複数あります） |
| link_notes | mediumtext | メモ |

```
+------------------+-----------------+------+-----+---------------------+----------------+
| Field            | Type            | Null | Key | Default             | Extra          |
+------------------+-----------------+------+-----+---------------------+----------------+
| link_id          | bigint unsigned | NO   | PRI | NULL                | auto_increment |
| link_url         | varchar(255)    | NO   |     |                     |                |
| link_name        | varchar(255)    | NO   |     |                     |                |
| link_image       | varchar(255)    | NO   |     |                     |                |
| link_target      | varchar(25)     | NO   |     |                     |                |
| link_description | varchar(255)    | NO   |     |                     |                |
| link_visible     | varchar(20)     | NO   | MUL | Y                   |                |
| link_owner       | bigint unsigned | NO   |     | 1                   |                |
| link_rating      | int             | NO   |     | 0                   |                |
| link_updated     | datetime        | NO   |     | 0000-00-00 00:00:00 |                |
| link_rel         | varchar(255)    | NO   |     |                     |                |
| link_notes       | mediumtext      | NO   |     | NULL                |                |
| link_rss         | varchar(255)    | NO   |     |                     |                |
+------------------+-----------------+------+-----+---------------------+----------------+
```

### wp_options
WordPress各種設定が保存されています。サイトURLやホームURL、サイト名などの基本情報から、一部プラグインの設定まで幅広く利用されています。
```
+--------------+-----------------+------+-----+---------+----------------+
| Field        | Type            | Null | Key | Default | Extra          |
+--------------+-----------------+------+-----+---------+----------------+
| option_id    | bigint unsigned | NO   | PRI | NULL    | auto_increment |
| option_name  | varchar(191)    | NO   | UNI |         |                |
| option_value | longtext        | NO   |     | NULL    |                |
| autoload     | varchar(20)     | NO   | MUL | yes     |                |
+--------------+-----------------+------+-----+---------+----------------+
```

### wp_postmeta
投稿のメタ情報が保存されています。カスタムフィールドやプラグインによって投稿に機能を追加する場合に使われます。
```
+------------+-----------------+------+-----+---------+----------------+
| Field      | Type            | Null | Key | Default | Extra          |
+------------+-----------------+------+-----+---------+----------------+
| meta_id    | bigint unsigned | NO   | PRI | NULL    | auto_increment |
| post_id    | bigint unsigned | NO   | MUL | 0       |                |
| meta_key   | varchar(255)    | YES  | MUL | NULL    |                |
| meta_value | longtext        | YES  |     | NULL    |                |
+------------+-----------------+------+-----+---------+----------------+
```

### wp_posts
12個のテーブルの中でも特に重要度が高いのが、WordPressの **投稿や固定ページに関するデータを蓄積している wp_posts**です。

| カラム名 | カラム型 | 概要 |
| :---- | :---- | :---- |
| post_author | bigint unsigned | 投稿者のID |
| post_date | datetime | 投稿した日時 |
| post_date_gmt | datetime | 投稿した日時（GMT） |
| post_content | longtext | 投稿の本文 |
| post_title | text | 投稿のタイトル |
| post_status | varchar(20) | 投稿ステータス |
| comment_status | varchar(20) | コメントの許可状況 |
| ping_status | varchar(20) | タックバック、ピンバック受け付けの可否 |
| post_password | varchar(255) | 投稿を閲覧するためのパスワード |

```
+-----------------------+-----------------+------+-----+---------------------+----------------+
| Field                 | Type            | Null | Key | Default             | Extra          |
+-----------------------+-----------------+------+-----+---------------------+----------------+
| ID                    | bigint unsigned | NO   | PRI | NULL                | auto_increment |
| post_author           | bigint 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   |     | NULL                |                |
| post_title            | text            | NO   |     | 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(255)    | 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 | longtext        | NO   |     | NULL                |                |
| post_parent           | bigint unsigned | NO   | MUL | 0                   |                |
| guid                  | varchar(255)    | NO   |     |                     |                |
| menu_order            | int             | NO   |     | 0                   |                |
| post_type             | varchar(20)     | NO   | MUL | post                |                |
| post_mime_type        | varchar(100)    | NO   |     |                     |                |
| comment_count         | bigint          | NO   |     | 0                   |                |
+-----------------------+-----------------+------+-----+---------------------+----------------+
```

### wp_termmeta
WordPress4.4から新たに追加されたテーブルです。プラグインや個別にカスタマイズする際に利用することができます。
```
+------------+-----------------+------+-----+---------+----------------+
| Field      | Type            | Null | Key | Default | Extra          |
+------------+-----------------+------+-----+---------+----------------+
| meta_id    | bigint unsigned | NO   | PRI | NULL    | auto_increment |
| term_id    | bigint unsigned | NO   | MUL | 0       |                |
| meta_key   | varchar(255)    | YES  | MUL | NULL    |                |
| meta_value | longtext        | YES  |     | NULL    |                |
+------------+-----------------+------+-----+---------+----------------+
```

### wp_terms
カテゴリやタグの名前とスラッグを保存しています。
```
+------------+-----------------+------+-----+---------+----------------+
| Field      | Type            | Null | Key | Default | Extra          |
+------------+-----------------+------+-----+---------+----------------+
| term_id    | bigint unsigned | NO   | PRI | NULL    | auto_increment |
| name       | varchar(200)    | NO   | MUL |         |                |
| slug       | varchar(200)    | NO   | MUL |         |                |
| term_group | bigint          | NO   |     | 0       |                |
+------------+-----------------+------+-----+---------+----------------+
```

### wp_term_relationships
投稿とカテゴリ・タグを紐付けています。どの投稿がどういったカテゴリ・タグを持ってるかの情報が保存されています。
```
+------------------+-----------------+------+-----+---------+-------+
| Field            | Type            | Null | Key | Default | Extra |
+------------------+-----------------+------+-----+---------+-------+
| object_id        | bigint unsigned | NO   | PRI | 0       |       |
| term_taxonomy_id | bigint unsigned | NO   | PRI | 0       |       |
| term_order       | int             | NO   |     | 0       |       |
+------------------+-----------------+------+-----+---------+-------+
```

### wp_term_taxonomy
wp_termに保存さている語句がカテゴリなのか？タグなのか？といった情報を保存しています。
```
+------------------+-----------------+------+-----+---------+----------------+
| Field            | Type            | Null | Key | Default | Extra          |
+------------------+-----------------+------+-----+---------+----------------+
| term_taxonomy_id | bigint unsigned | NO   | PRI | NULL    | auto_increment |
| term_id          | bigint unsigned | NO   | MUL | 0       |                |
| taxonomy         | varchar(32)     | NO   | MUL |         |                |
| description      | longtext        | NO   |     | NULL    |                |
| parent           | bigint unsigned | NO   |     | 0       |                |
| count            | bigint          | NO   |     | 0       |                |
+------------------+-----------------+------+-----+---------+----------------+
```

### wp_usermeta
WordPressユーザーのメタデータが格納されています。各ユーザーの紹介文や権限などの設定に使用されています。
```
+------------+-----------------+------+-----+---------+----------------+
| Field      | Type            | Null | Key | Default | Extra          |
+------------+-----------------+------+-----+---------+----------------+
| umeta_id   | bigint unsigned | NO   | PRI | NULL    | auto_increment |
| user_id    | bigint unsigned | NO   | MUL | 0       |                |
| meta_key   | varchar(255)    | YES  | MUL | NULL    |                |
| meta_value | longtext        | YES  |     | NULL    |                |
+------------+-----------------+------+-----+---------+----------------+
```

### wp_users
WordPressのユーザーに関連した設定を保存しているのが wp_users で、WordPressの**管理画面へのログインに必要なユーザー名やパスワード**をここから参照できます。

| カラム名 | カラム型 | 概要 |
| :---- | :---- | :---- |
| user_login | varchar(60) | ログイン名 |
| user_pass | varchar(255) | ユーザーパスワード |
| user_email | varchar(100) | ユーザーの登録メールアドレス |
| user_url | varchar(100) | ウェブサイトのURL |
| user_registered | datetime | ユーザーの登録日時 |

```
+---------------------+-----------------+------+-----+---------------------+----------------+
| Field               | Type            | Null | Key | Default             | Extra          |
+---------------------+-----------------+------+-----+---------------------+----------------+
| ID                  | bigint unsigned | NO   | PRI | NULL                | auto_increment |
| user_login          | varchar(60)     | NO   | MUL |                     |                |
| user_pass           | varchar(255)    | NO   |     |                     |                |
| user_nicename       | varchar(50)     | NO   | MUL |                     |                |
| user_email          | varchar(100)    | NO   | MUL |                     |                |
| user_url            | varchar(100)    | NO   |     |                     |                |
| user_registered     | datetime        | NO   |     | 0000-00-00 00:00:00 |                |
| user_activation_key | varchar(255)    | NO   |     |                     |                |
| user_status         | int             | NO   |     | 0                   |                |
| display_name        | varchar(250)    | NO   |     |                     |                |
+---------------------+-----------------+------+-----+---------------------+----------------+
```

## WordPressのフォルダ・ファイル構成

WordPressのディレクトリとファイルの基本的な構成を知っておけば、WordPressのバックアップからの復旧作業や、サーバー移転などの時に役立ちます。また、WordPress本体バージョンアップで自動で置き換わるシステム系ファイルと、独自でカスタマイズできる（バージョンアップで置き換わらない）ファイルがあるので、ファイルを編集する際は、これらを理解した上で編集する必要があります。

| フォルダ・ファイル名 | 概要 |
| :---- | :---- |
| wp-admin | ワードプレスの管理画面用のファイル類が格納されているフォルダ。基本的にWordPressバージョンアップで置き換わるファイル類 |
| wp-includes | ワードプレスのシステム全般に関するファイル類が格納されているフォルダ。基本的にWordPressバージョンアップで置き換わるファイル類 |
| wp-content | 	ワードプレスのテーマやプラグイン、画像データなどが入ったフォルダ。基本的にWordPress本体バージョンアップで置き換わらないファイル類があるので、**ワードプレスをカスタマイズする際には、主にこのフォルダの中のファイル類に対して作業**していきます |
| wp-config.php | WordPressの設定ファイル。データベースとの通信に必要な情報なども記述されており、とても重要なファイル |
| .htaccess | アクセスを制御するとても重要なファイル。WordPressが自動生成するが、追記などして動作制御をすることが可能 |
| wp-login.php | ワードプレスのログイン画面に関するファイル |
| wp-load.php | ワードプレスの動作に必要なプログラム類を読み込むファイル |
| index.php | サイトにアクセスがあった時に最初に読み込まれるファイル |

### wp-admin
wp-admin フォルダーには、WordPress管理画面のファイル類（HTML、PHP、CSS、画像）が格納されています。  
WordPressをアップデートすると、wp-adminフォルダー内のファイル類は新しいバージョンのファイルに置き換わるので、**通常wp-adminの中のファイルはカスタマイズしない方が安全**です。WordPressの管理画面をカスタマイズする際はWordPressバージョンアップで置き換わらないファイル(functions.phpなど)に記述することで対応できます。

### wp-include
wp-includesフォルダーには、システムを管理するPHPなどのプログラムファイルが格納されています。
WordPressをアップデートすると、wp-includesフォルダー内のファイル類は新しいバージョンのファイルに置き換わるので、**通常wp-includesの中のファイルはカスタマイズしない方が安全**です。

### wp-content
wp-contentフォルダーには、WordPressのテーマやプラグイン、画像データなどが入っています。WordPressをカスタマイズする際には、主にこのwp-contentフォルダの中のファイル類に対して作業していきます。wp-adminやwp-includesフォルダと違って、wp-contentは個々のサイトごとにオリジナルのデータが入ることになるのでバックアップするべき重要なファイルです。

- wp-contentフォルダの内訳

| フォルダ・ファイル名 | 概要 |
| :---- | :---- |
| language | 翻訳ファイルを格納 |
| plugins | プラグインファイルが格納されています |
| themes | テーマファイルが格納されています |
| upgrade | アップデートファイルが格納されています |
| uploads | アップロードした画像ファイルなどが格納されています |

#### wp-content/themes
themesフォルダは、WordPressのテーマフォルダ類が格納されています。  
初期状態では、twentytwentyone、twentytwenty などの公式テーマがあり、WordPressの管理画面からテーマを新規インストールするとthemesフォルダの中にテーマフォルダが新たに格納されていきます。  
各テーマフォルダには、ページを表示させるためのPHPや、CSS、JavaScriptファイルなどが格納されています。

#### wp-content/plugins
pluginsフォルダは、WordPressのプラグインファイル類が格納されています。  
pluginsフォルダの中に移動すると、各種プラグインフォルダが新たに格納されていきます。
pluginsフォルダの中のプラグインのフォルダ名を変更すると強制的にプラグイン無効化することもできます。

#### wp-content/uploads
uploadsフォルダには、主にWordPressのメディアライブラリにアップロードした画像が格納されています。  
アップロードされた画像は年・日付フォルダごとに分類されて格納されており、WordPressのメディアライブラリから画像を閲覧することができます。

#### wp-content/language
languageフォルダは、WordPressの言語ファイルが格納されています。  
通常、独自で触ることはないフォルダです。

#### wp-content/upgrades
upgradesフォルダは、WordPressのアップグレード時に利用されるフォルダです。  
通常、中身はなく独自で触ることはないフォルダです。

### WordPress直下にある重要ファイル
特に**wp-config.phpと.htaccessは、個々のサイトごとにオリジナルの内容が記述されている**ため、何かあったときの復元・復旧に必要な重要なファイルです。

#### wp-config.php
wp-config.phpは、WordPressの設定ファイル。データベースとの通信に必要な情報なども記述されている、中身的にもセキュリティ的にもとても重要なファイルです。WordPressの復元する際にこのファイルが必要になります。

#### .htaccess
.htaccessは、アクセスを制御する中身的にもセキュリティ的にもとても重要なファイルです。  
WordPressが自動生成するが、追記などして常時SSLやアクセス制限など動作制御をすることが可能です。