# WordPressサイトでWP-CLIを使用する

Source: https://support.kapsulehost.com/ja-jp/wordpress-wp-cli

KPanel には、SSH クライアントもサーバーへのログインも不要で、ブラウザから WordPress サイトに対してコマンドを実行できる WP-CLI コンソールが含まれています。このガイドでは、コンソールの場所、許可されているコマンドとその理由、画面に組み込まれたショートカット、そしてコンソールで実行できないことが必要になった場合の対処法について説明します。

## コンソールを開く

1. [KPanel](https://kpanel.kapsulehost.com) にサインインし、左サイドバーの **ウェブサイト** をクリックします。
2. ご利用の WordPress サイトをクリックします。
3. **WordPress** タブを開き、次に **Console** セクションを開きます。

![WP-CLI console on a WordPress site in KPanel](https://support.kapsulehost.com/help/screenshots/wordpress-wp-cli.c3f61741.webp)

入力欄にはあらかじめ固定の `wp` が入力されているため、その後に続く部分だけを入力します。`plugin list` であり、`wp plugin list` ではありません。Enter キーを押すか、**Run** をクリックしてください。

> **Note:** **Console** は、マネージドプランで表示されるセクションのひとつです。他のプランでは、タブの一覧の末尾に代わりに **+8 on Managed** というリンクが表示されます。ここで説明する生のコマンド以外の操作には、KPanel の他の場所に対応するボタンが必ず用意されているため、何も手が届かないということはありません。コンソールは同じエンジンにより速くたどり着く方法にすぎません。

コマンドは、サイト専用のシステムユーザーとして、サイトのディレクトリ内で実行されます。他のサイトを閲覧したり操作したりすることはできません。

## コンソールが実行できること、できないこと

コンソールは許可リスト方式を採用しています。以下に挙げるコマンドのプレフィックスのみが受け付けられ、それ以外はサーバーに届く前に拒否され、拒否されたコマンド名を示すメッセージが表示されます。

| 分野 | 許可されているコマンド |
|---|---|
| コア | `core version`, `core check-update`, `core update`, `core is-installed`, `core verify-checksums` |
| プラグイン | `plugin list`, `plugin update`, `plugin install`, `plugin activate`, `plugin deactivate`, `plugin status`, `plugin get`, `plugin delete`, `plugin verify-checksums` |
| テーマ | `theme list`, `theme update`, `theme install`, `theme activate`, `theme status`, `theme get`, `theme delete` |
| ユーザー | `user list`, `user get`, `user create`, `user update`, `user set-role`, `user delete`, `user reset-password`, `user add-cap`, `user remove-cap`, `user generate` |
| データベース | `db size`, `db tables`, `db optimize`, `db repair`, `db check` |
| キャッシュとトランジエント | `cache flush`, `cache get`, `cache set`, `cache add`, `cache delete`, `transient get`, `transient set`, `transient delete` |
| リライトルール | `rewrite flush`, `rewrite list`, `rewrite structure` |
| cron | `cron event list`, `cron event run`, `cron schedule list` |
| 設定 | `config get`, `config list`, `config has`, `config shuffle-salts` |
| メンテナンスモード | `maintenance-mode activate`, `maintenance-mode deactivate`, `maintenance-mode status` |
| 読み取り専用の確認 | `option get`, `option list`, `post list`, `post get`, `comment list`, `comment get` |
| メディアと言語 | `media regenerate`, `language core install`, `language core update` |
| 検索と置換 | `search-replace` |

意図的に除外されているコマンドのほうが、許可されているコマンドより重要です。

- **`eval` と `shell`** はブロックされています。任意の PHP コードや任意のシェルコマンドを実行できてしまうと、コンソールはブラウザのタブ内にある root プロンプトと同等になってしまいます。
- **`db import`、`db export`、`db drop`、`db query`、`db reset`** はブロックされています。インポートとリセットは確認なしでデータベースを破壊してしまい、`db query` は制限のない SQL プロンプトです。代わりに phpMyAdmin をお使いください。[phpMyAdmin でデータベースにアクセスする](https://support.kapsulehost.com/ja-jp/sites-phpmyadmin)。
- **`config set` と `config delete`** はブロックされています。誤った `wp-config.php` への書き込みは、サイトをオフラインにしてしまいます。値はここで確認し、変更はファイルマネージャーから行ってください。
- **`option update` と `option delete`** はブロックされています。内容を確認せずにオプションを編集することは、サイトを修復不能なほど壊してしまう典型的な原因です。

> **Warning:** コンソールは、どのコマンドを実行してもバックアップを自動で取得しません。バックアップを取得するのは **クイックアクション** セクションのボタンだけです。`search-replace`、`core update`、`plugin update`、`theme update`、`db optimize`、`db repair` を実行する前には、サイトの **バックアップ** ページから必ずご自身でバックアップを取得してください。[バックアップを取得する](https://support.kapsulehost.com/ja-jp/taking-a-backup)をご覧ください。

## コンソールでの作業

この画面は、一度にひとつのコマンドを受け付けるだけではありません。

**プリセットボタン。** プロンプトの上にグループ化されたショートカットが並んでいます。Performance(キャッシュのフラッシュ、トランジエントのクリア、リライトのフラッシュ、オートロードの確認)、Database(最適化、チェック、修復、サイズ確認)、Diagnostics(WP バージョン、更新の確認、コアの検証、cron イベント)、Content(プラグイン、テーマ、ユーザーの一覧表示、cron の即時実行)、Security(管理者ユーザー、プラグインのチェックサム、ソルトのリセット、wp-config)、Maintenance(メンテナンスモードのオンとオフ、サムネイルの再生成、ステータス)です。ワンクリックでコマンドが実行されます。

**履歴。** プロンプト内で上下矢印キーを押すと、このサイトでの直近50件のコマンドをたどることができます。

**スニペット。** コマンドの横にあるブックマークアイコンをクリックすると、名前を付けて保存できるため、毎月使うような長いコマンドも次回からはワンクリックで実行できます。

**環境カード。** プロンプトの上には、サイトの PHP バージョン、WordPress バージョン、メモリ上限、現在使用中のメモリ、アップロード上限、実行時間の上限が表示されるカードがあり、**サポート用にコピー** ボタンを押すと、これらすべてと有効なプラグインの一覧がクリップボードにコピーされます。サポートチケットにそれを貼り付ければ、やり取りを一往復分省くことができます。

**出力のコピー。** すべての実行結果ブロックには、コピーボタンとクリアボタンがあります。

出力はコマンドの実行中にストリーミングで返されるため、長時間かかる処理でも無反応に見えることはなく、進行状況が表示されます。

## 知っておくと役立つコマンド

### 診断

```
core version
core verify-checksums
plugin verify-checksums --all
plugin list --status=active --format=table
db size --tables
option list --autoload=yes
```

`verify-checksums` は、コアとプラグインのファイルを公式に公開されているコピーと比較し、改変されている箇所を報告します。改ざんが疑われるサイトで最初に行うべき、最も手早いチェックです。

`option list --autoload=yes` は、WordPress がすべてのリクエストで読み込んでいるオプションを一覧表示します。肥大化したオートロードテーブルは、目に見える原因がないのにサイトが遅くなる最も一般的な要因のひとつです。

### 日常管理

```
cache flush
transient delete --all
rewrite flush
db optimize
cron event list
cron event run --due-now
```

### ユーザー

```
user list --role=administrator --format=table
user create jo jo@example.com --role=editor
user update 4 --user_pass='a-long-unique-password'
```

ここに入力した内容は、パスワードを含めてアカウントの操作ログに記録されます。この方法で設定したパスワードは、サインインした後に変更してください。アカウント復旧の詳細については、[紛失した WordPress 管理者パスワードのリセット](https://support.kapsulehost.com/ja-jp/wordpress-reset-password)をご覧ください。

### 検索と置換

```
search-replace 'http://old-domain.co.nz' 'https://old-domain.co.nz' --all-tables --dry-run
```

必ず最初にドライランを行ってください。生の SQL による置換が WordPress のデータベースを破損させる理由を含む詳しい手順は、[検索と置換を実行する](https://support.kapsulehost.com/ja-jp/wordpress-search-replace)をご覧ください。

## コンソールと Quick Actions、どちらを使うべきか

どちらも内部では同じ WP-CLI を実行しています。以下を基準に選んでください。

| タスク | より適した方法 |
|---|---|
| キャッシュのフラッシュ、プラグインの更新、メディアの再生成 | **クイックアクション**、ワンクリックで先にバックアップが取得される |
| テーブルごとにプレビューしながら検索と置換を行う | **クイックアクション**、Search & Replace カード |
| 特定のフラグが必要な操作 | コンソール |
| 一覧表示、確認、診断 | コンソール |
| 期限切れの cron イベントを1件だけ実行する | コンソール |
| `wp-config.php` を編集する、またはデータベースをインポートする | どちらでもありません。ファイルマネージャーか phpMyAdmin を使用してください |

## 許可リストを超える操作が必要な場合

制限のない WP-CLI を使うには、SSH で接続し、サイトのディレクトリから直接 `wp` を実行してください。SSH は鍵認証のみに対応しているため、まずサイトの **設定** から **SSH キー** タブで公開鍵を追加してください。正確なホスト名、ポート番号、ユーザー名を含む接続情報は、同じ画面に表示されます。[SSH キーを追加する](https://support.kapsulehost.com/ja-jp/adding-ssh-keys)および[SFTP で接続する](https://support.kapsulehost.com/ja-jp/sftp-access)をご覧ください。

## トラブルシューティング

**「'x y' is not in the allowed command list.」** そのコマンドは許可リストに含まれていません。上の表で代替となる許可済みコマンドを確認するか、SSH をご利用ください。

**「No results returned. Check that WP-CLI is available.」** コマンドは実行されましたが、何も出力されませんでした。該当する結果がないクエリでは、通常はこれが正しい挙動です。

**コマンドがタイムアウトする。** コンソールのコマンドは60秒で打ち切られます。大規模なメディアライブラリの再生成のような長時間の処理は、より長い制限時間が設定されている **クイックアクション** から実行するか、SSH 経由で実行してください。

**何も実行されず、ボタンが無効になっている。** お使いの KapsuleHost アカウントの権限が、このサイトに対して読み取り専用になっています。アカウント所有者に権限の引き上げを依頼してください。
