WP CLIでWordPress記事を追加する方法とLocal by flywheelで発生するデータベース接続問題の解決

## はじめに

WordPressサイトの管理を効率化するためにWP CLIは非常に強力なツールです。しかし、Local by Flywheelなどの開発環境では、データベース接続に関する問題が発生することがあります。この記事では、「Error establishing a database connection」エラーの解決方法と、WP CLIを使った記事追加の方法を解説します。

## 問題：データベース接続エラー

WP CLIを通常の方法で実行すると、以下のようなエラーメッセージが表示されることがあります：

```
Error: Error establishing a database connection.
```

このエラーは、WP CLIがWordPressデータベースに接続できない状態を示しています。

## 原因の特定

Local by Flywheelなどの開発環境では、MySQLデータベースへの接続に特殊なソケットファイルパスを使用しています。標準的な設定では単に「localhost」と指定されているDB_HOSTでは、正しいソケットファイルを見つけることができません。

wp-config.phpを確認すると、通常は以下のような設定になっています：

```php
/** Database hostname */
define('DB_HOST', 'localhost');
```

## 解決方法：wp-config.phpの修正

### 1. MySQLソケットファイルパスの確認

Local by Flywheelでは、以下の方法でMySQLソケットファイルのパスを確認できます：

- Localアプリでサイトを選択
- 「DATABASE」タブをクリック
- 「Socket Path」の値を確認

例：
```
/Users/ユーザー名/Library/Application Support/Local/run/ランダム文字列/mysql/mysqld.sock
```

### 2. wp-config.phpの修正

wp-config.phpファイルのDB_HOST定義を以下のように変更します：

```php
// 変更前
define('DB_HOST', 'localhost');

// 変更後
define('DB_HOST', 'localhost:/Users/ユーザー名/Library/Application Support/Local/run/ランダム文字列/mysql/mysqld.sock');
```

「uryu-mitsutaka」と「AVsVRA3lO」の部分は、ご自身の環境に合わせて変更してください。

### 3. 修正結果の確認

修正後、WP CLIコマンドを実行してWordPressバージョンを確認します：

```bash
wp core version
```

正常に動作すれば、WordPressのバージョン（例：6.7.2）が表示されます。

## WP CLIを使った記事の追加方法

### 基本的な記事の追加

```bash
wp post create --post_type=post --post_title="WP CLIで作成した記事" --post_content="これはWP CLIコマンドで作成した記事です。" --post_status=publish
```

実行結果：
```
Success: Created post 91.
```

### 記事一覧の確認

```bash
wp post list --post_type=post --posts_per_page=5
```

実行結果：
```
+----+---------------------------+---------------------------+-------------------------------+-------------+
| ID | post_title                | post_name                 | post_date                     | post_status |
+----+---------------------------+---------------------------+-------------------------------+-------------+
| 91 | WP CLIで作成した記事      | wp-cli...                 | 2023-03-09 10:45:51           | publish     |
| 1  | Hello world!              | hello-world               | 2023-02-24 05:23:02           | publish     |
+----+---------------------------+---------------------------+-------------------------------+-------------+
```

## 応用：カテゴリーとタグの追加

### カテゴリーの作成

```bash
wp term create category "WP CLI" --description="WP CLIで作成したカテゴリー"
```

実行結果：
```
Success: Created category 33.
```

### カテゴリー付き記事の作成

```bash
wp post create --post_type=post --post_title="カテゴリー付き記事" --post_content="これはカテゴリーを指定して作成した記事です。" --post_status=publish --post_category="WP CLI"
```

実行結果：
```
Success: Created post 92.
```

### タグの作成

```bash
wp term create post_tag "wp-cli" --description="WP CLIで作成したタグ"
```

実行結果：
```
Success: Created post_tag 34.
```

### タグ付き記事の作成

```bash
wp post create --post_type=post --post_title="タグ付き記事" --post_content="これはタグを指定して作成した記事です。" --post_status=publish --tags_input="wp-cli"
```

実行結果：
```
Success: Created post 93.
```

## 日付指定と下書き機能

### 特定日付の下書き記事を作成

```bash
wp post create --post_type=post --post_title="特定日付の下書き記事" --post_content="これは特定の日付で作成した下書き記事です。" --post_status=draft --post_date="2023-12-25 07:30:00"
```

実行結果：
```
Success: Created post 94.
```

### 記事の一覧で確認

```bash
wp post list --post_type=post --posts_per_page=10
```

実行結果：
```
+----+---------------------------+---------------------------+-------------------------------+-------------+
| ID | post_title                | post_name                 | post_date                     | post_status |
+----+---------------------------+---------------------------+-------------------------------+-------------+
| 93 | タグ付き記事              | ...                       | 2023-03-09 10:46:15           | publish     |
| 92 | カテゴリー付き記事        | ...                       | 2023-03-09 10:46:06           | publish     |
| 91 | WP CLIで作成した記事      | ...                       | 2023-03-09 10:45:51           | publish     |
| 1  | Hello world!              | hello-world               | 2023-02-24 05:23:02           | publish     |
| 94 | 特定日付の下書き記事      |                           | 2023-12-25 07:30:00           | draft       |
+----+---------------------------+---------------------------+-------------------------------+-------------+
```

## よく使うその他のWP CLIコマンド

### 記事の更新

```bash
wp post update 91 --post_title="更新されたタイトル" --post_content="更新された内容"
```

### 記事の削除

```bash
wp post delete 94 --force
```

### 特定のフォーマットで記事一覧を出力

```bash
wp post list --format=csv --fields=ID,post_title,post_date
```

### 記事のメタデータを追加

```bash
wp post meta add 91 featured "true"
```

### 記事をエクスポート

```bash
wp export --post_type=post --dir=/tmp/export
```

## まとめ

LocalでWP CLIを使用する際に発生するデータベース接続エラーは、wp-config.phpのDB_HOST設定にMySQLソケットファイルのパスを追加することで解決できます。この修正により、WP CLIの強力な機能を活用して記事の追加や管理を効率化できるようになります。

カテゴリーやタグの作成、日付指定や下書き機能など、WP CLIを使えば複雑なコンテンツ管理も簡単に行えます。特に大量の記事を扱う場合や、定型的な作業を自動化したい場合に非常に便利なツールです。

この記事が、Local環境でのWP CLI活用の一助となれば幸いです。