Skip to content

Latest commit

 

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WP-CLI Dashboard Plugin

WordPressの管理画面上でWP-CLIコマンドを実行できるプラグインです。ターミナル風のインタラクティブなインターフェイスを提供し、サーバーにSSHアクセスすることなくWP-CLIコマンドを実行できます。

Plugin Screenshot

特徴

🖥️ ターミナル風インターフェイス

  • ダークテーマの本格的なターミナル風UI
  • リアルタイムでのコマンド実行結果表示
  • 等幅フォントでの見やすい出力

⌨️ インタラクティブ操作

  • Enterキーでコマンド実行
  • ↑/↓キーでコマンド履歴の移動
  • 自動フォーカス機能

📦 WP-CLI内蔵

  • WP-CLI pharファイルの自動ダウンロード機能
  • プラグイン内にWP-CLIを内蔵可能
  • 外部インストール不要

🧪 WordPress Playground 対応

  • shell実行不可の環境(WordPress Playground の PHP WASM)を自動検出
  • wp-cli.phar を同一PHPプロセス内で実行するインプロセスランナーで動作
  • ワンタイムトークンによるランナーの認可(コマンド内容はサーバー側で確定)

🔒 セキュリティ

  • 管理者権限でのアクセス制限
  • nonce認証によるCSRF対策
  • 危険なコマンドの実行制限
  • db exportファイルの安全な保存場所
  • Webアクセス不可能なディレクトリへの出力

インストール

  1. このプラグインをWordPressのwp-content/plugins/ディレクトリにアップロード
  2. WordPressの管理画面でプラグインを有効化
  3. 「ツール」→「WP-CLI」にアクセス

使用方法

基本的な使い方

  1. WordPress管理画面の「ツール」メニューから「WP-CLI」をクリック
  2. ターミナル画面でWP-CLIコマンドを入力(wpは不要)
  3. Enterキーを押してコマンドを実行

コマンド例

# オプションの一覧表示
option list

# ユーザー一覧表示
user list

# プラグイン一覧表示
plugin list

# キャッシュクリア
cache flush

# データベース最適化
db optimize

# データベースエクスポート(安全なディレクトリに自動保存)
db export

# サイト情報表示
core version

WP-CLIが見つからない場合

プラグイン画面に「WP-CLIが見つかりません」と表示された場合:

  1. 「WP-CLI pharファイルをダウンロード」ボタンをクリック
  2. 自動的にWP-CLI pharファイルがダウンロードされます
  3. ページを再読み込みして利用開始

機能詳細

サポートするWP-CLI実行方式

このプラグインはセキュリティと安定性のため、pharファイル版のWP-CLIのみを使用します:

  1. プラグイン内蔵wp-cli.phar(最優先)
  2. WordPressルートディレクトリのwp-cli.phar
  3. ドキュメントルートのwp-cli.phar

※サーバーインストール版のWP-CLIは使用せず、環境依存を回避します。

キーボードショートカット

  • Enter: コマンド実行
  • : 前のコマンドを履歴から呼び出し
  • : 次のコマンドを履歴から呼び出し

セキュリティ制限

危険なコマンドの制限

以下のような危険なコマンド・文字列を含む実行は制限されています:

  • rm, del, format
  • sudo, chmod, chown
  • リダイレクト記号: >, >>
  • パイプ: |
  • コマンド連結: &, ;

データベースエクスポートのセキュリティ

  • db exportコマンドは自動的に安全なディレクトリに保存
  • 保存場所: wp-content/plugins/dashboard-wp-cli/exports/
  • .htaccessでWebアクセスを完全拒否
  • タイムスタンプ付きファイル名で重複を防止
  • 例: database_export_2025-08-27_20-35-45.sql

技術仕様

要件

  • WordPress 4.6以上
  • PHP 7.0以上
  • 管理者権限

ファイル構成

dashboard-wp-cli/
├── dashboard-wp-cli.php    # メインプラグインファイル
├── wpcli-runner.php        # インプロセスランナー(WordPress Playground 用)
├── assets/
│   ├── css/
│   │   └── admin.css       # 管理画面スタイル
│   └── js/
│       └── admin.js        # 管理画面スクリプト
├── wp-cli.phar             # WP-CLI実行ファイル(自動ダウンロード)
├── .gitignore              # Gitignore設定
└── README.md               # このファイル

主要クラス・機能

  • DashboardWPCLI: メインクラス
  • add_admin_menu(): 管理画面メニュー追加
  • execute_wpcli_command(): WP-CLIコマンド実行
  • download_wpcli_phar(): WP-CLI自動ダウンロード
  • is_wpcli_available(): WP-CLI利用可能性チェック
  • process_db_export_command(): データベースエクスポートの安全な処理
  • get_secure_export_directory(): 安全なエクスポートディレクトリの作成

デバッグ

コマンド実行時に問題が発生した場合、以下の詳細情報が表示されます:

  • 実行されたコマンド
  • 完全なコマンドライン
  • WP-CLIのパス
  • WordPressのパス
  • 実行結果

トラブルシューティング

WP-CLIが見つからない

症状: 「WP-CLI pharファイルが見つかりません」エラー

解決方法:

  1. 「WP-CLI pharファイルをダウンロード」ボタンをクリック
  2. 手動でwp-cli.pharをプラグインディレクトリに配置
  3. wp-envなどのローカル環境ではSSL設定を確認

コマンド実行エラー

症状: コマンドが正常に実行されない

確認事項:

  1. PHP関数shell_exec()が有効化されている
  2. ファイル権限が適切に設定されている
  3. サーバーのセキュリティ制限

WordPress Playground での利用

WordPress Playground(@wp-playground/cli など)では shell_exec() が動作しないため、 プラグインが自動的にインプロセスランナー(wpcli-runner.php)へ切り替えます。 wp-cli.phar がプラグインディレクトリに存在すればそのまま動作します。

注意点:

  • db export などmysqldumpに依存するコマンドは、PlaygroundのSQLite環境では動作しません
  • Query Monitor プラグインを有効化するとPlaygroundではログイン済みリクエストが 500エラーになることがあります(本プラグインとは無関係の非互換)。無効化してください

表示の問題

症状: ターミナル画面が正しく表示されない

解決方法:

  1. ブラウザのキャッシュをクリア
  2. JavaScriptが有効になっていることを確認
  3. ブラウザの開発者ツールでエラーを確認

ライセンス

GPL v2 or later

作者

開発者情報をここに記載

更新履歴

1.2.1

  • Playground環境でのdbコマンド制限: WordPress Playground(SQLite環境)を検出した場合、管理画面にdbコマンドが使用できない旨の警告を表示
  • dbコマンド実行時のエラー: Playground環境でdbコマンド(db exportdb optimizeなど)を実行しようとした場合、処理を実行せず分かりやすいエラーメッセージを返すように変更

1.2.0

  • WordPress Playground 対応: shell実行不可の環境(PHP WASM)を自動検出し、wp-cli.phar を同一PHPプロセス内で実行するインプロセスランナー(wpcli-runner.php)を追加
  • ワンタイムトークン認可: ランナーはWordPress非ロードの単独エンドポイントのため、権限・nonce検証済みのAJAXハンドラーが発行する使い捨てトークン(有効期限120秒・実行前削除)でのみ実行可能。コマンド内容はトークン発行時にサーバー側で確定
  • shell_exec 判定の改善: function_exists() だけでなく実際の実行結果で判定(Playgroundでは定義済みだが常にnullを返すため)

1.1.1

  • コーディング規約対応: WordPress Coding Standards (WPCS) に完全準拠
  • 入力サニタイズ強化: wp_unslash() + sanitize_text_field() を全スーパーグローバル変数に適用
  • コード品質向上: Yoda 記法、gmdate()set_time_limit()wp_delete_file() への統一

1.1.0

  • Local WP 対応: php-fpm 検出時に CLI バイナリを自動解決
  • DB 接続修正: mysqli.default_socket を注入して Local WP の MySQL ソケットに接続
  • ファイル分割: CSS・JS をそれぞれ assets/css/admin.cssassets/js/admin.js に分離
  • phar 検証強化: shebang・PHP タグ・ZIP の各形式に対応

1.0.1

  • セキュリティ強化: db exportファイルの安全な保存場所
  • リモートサーバー対応: 共有ホスティング環境での動作安定性向上
  • pharファイル専用: サーバーインストール版WP-CLIを除外して環境依存を回避
  • エラーハンドリング強化: PHP警告抑制と例外処理追加
  • wp-env対応: ローカル開発環境でのダウンロード問題修正

1.0.0

  • 初回リリース
  • ターミナル風インターフェイス実装
  • WP-CLI自動ダウンロード機能
  • コマンド履歴機能
  • 基本セキュリティ機能

サポート

バグ報告や機能要望は、GitHubのIssuesページまでお願いします。

貢献

プルリクエストやバグ報告を歓迎します。開発に参加する場合は、以下のガイドラインに従ってください:

  1. フォークしてブランチを作成
  2. 変更をコミット
  3. プルリクエストを送信

免責事項

このプラグインの使用によって生じたいかなる損害についても、作者は責任を負いません。本番環境での使用前に、必ずテスト環境で動作を確認してください。

About

wp-cli on dashboard

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages