Wordpressの管理画面内からwp-cliコマンドを直接実行できるようにする機能をfunction.phpに書くだけで実装する方法

コマンドでWordPressを操作しよう!WP-CLIって?

WordPressでブログを書いたり、ページを作ったりするとき、マウスを使って画面をクリックしたり、文字を入力したりします

実は WP-CLI というツールを使うと、 コマンド (命令文)でWordPressを操作することができます。
参考:https://wp-cli.org/ja/


WP-CLIを使うと何が良いの?

  • 繰り返し作業を楽にできる!

    • 例えば、たくさんのプラグインを一度にアップデートしたいとき、一つずつクリックしてたら大変だよね? WP-CLIなら、コマンド一つで全部まとめてアップデートできるよ!

  • 複雑な設定も簡単にできる!

    • WordPressの細かい設定を変更したいとき、設定画面を探したり、コードを編集したりするのは面倒だよね? WP-CLIなら、コマンド一つで目的の設定を見つけたり、変更したりできるよ!

WP-CLIの基本的な使い方

WP-CLIを使うには、まず コマンドプロンプトターミナル と呼ばれる黒い画面を使う必要があります。

ちょっと難しそうに見えるかもしれませんが、基本的なコマンドはんなに難しくありません!

例えば、インストールされているプラグインの一覧を表示したいときは、

wp plugin list

と打つだけでインストールしているプラグインの一覧が確認できます

wp plugin update --all
wp theme update --all

この2行だけでwordpressにインストールされているプラグインとテーマを全て一括でアップデートしてくれます

今回タイトルの通り、Wordpressのテーマファイル内のfunction.phpにコードを書き込んで保存するだけで機能追加できる(簡易的なプラグイン)を無料で公開します

下記のようにダッシュボード内に「すべて更新ボタン」が表示されてクリックするだけで一括アップデートできるようになります

WordPress ダッシュボードアップデートボタン 仕様書

対象として下記のような人を対象に、サンプルコードを公開します

  • WordPressとPHPを勉強している人

  • WordPressのプラグイン、テーマ、コアのアップデートをボタン一つで実行したい人

前提知識

  • HTMLの基本的な知識(タグ、属性など)

  • PHPの基本的な知識(変数、条件分岐、関数など)

  • WordPressの基本的な知識(テーマ、プラグイン、ダッシュボードなど)

  • WP-CLIの基本的な知識(コマンドの実行方法など)

このコードでできること

このコードは、WordPressのダッシュボードに「すべて更新」ボタンを追加します。
このボタンをクリックすると、以下の操作を一括で実行できます。

  • インストール済みプラグインのすべてを最新バージョンにアップデート

  • WordPressコアを最新バージョンにアップデート

  • インストール済みテーマのすべてを最新バージョンにアップデート

コードの仕組み

  1. PHPコードの設置

    • このコードを、WordPressテーマの functions.php ファイルに貼り付けます。

    • functions.php は、テーマの動作をカスタマイズするためのPHPコードを記述するファイルです。

  2. ダッシュボードウィジェットの追加

    • add_action('wp_dashboard_setup', ...) の部分で、ダッシュボードが表示される際に実行する処理を登録しています。

    • wp_add_dashboard_widget() 関数を使って、ダッシュボードに新しいウィジェットを追加しています。

      • 第一引数 'wp-cli-executor' はウィジェットのID、第二引数 'WP CLI Executor' はウィジェットのタイトルです。

      • 第三引数は、ウィジェットの内容を表示するための関数を指定しています。

  3. ボタンとフォームの設置

    • ウィジェットの内容を表示する関数の中で、HTMLのフォームとボタンを設置しています。

    • フォームは、ユーザーがボタンをクリックした時に、どのPHPコードを実行するかをWordPressに伝える役割をしています。

    • ボタンには 'すべて更新' という表示を与え、クリックすると確認ダイアログが表示されるように設定しています。

  4. コマンドの実行

    • ボタンがクリックされると、フォームに設定されたコマンドが実行されます。

    • shell_exec() 関数は、PHPから外部コマンドを実行するための関数です。

      • この関数を使って、wp-cli.phar を実行し、プラグイン、テーマ、コアのアップデートコマンドを実行しています。

    • コマンドの実行結果は、ブラウザ上に表示されます。

コードの解説

<?php
/**
 * ダッシュボードにWP-CLIコマンドを一括実行するボタンを追加
 */

// ダッシュボードが読み込まれる際に実行される関数を登録
add_action('wp_dashboard_setup', function () {
    // ダッシュボードに新しいウィジェットを追加
    wp_add_dashboard_widget(
        'wp-cli-executor', // ウィジェットのID
        'WP CLI Executor', // ウィジェットのタイトル
        function () { // ウィジェットの内容を表示する関数
            $wp_cli_path = '~/bin/wp-cli.phar'; // wp-cli.phar へのパス
            ?>
            <form method="post"> 
                <!-- コマンド実行用のフォーム -->
                <input type="hidden" name="command" value="/usr/bin/php8.0 <?php echo $wp_cli_path; ?> plugin update --all && /usr/bin/php8.0 <?php echo $wp_cli_path; ?> core update && /usr/bin/php8.0 <?php echo $wp_cli_path; ?> theme update --all"> 
                <!-- 実行するコマンドを指定 -->
                <p><input type="submit" value="すべて更新" class="button button-primary" onclick="return confirm('本当にすべて更新しますか?')"></p> 
                <!-- ボタンを押すと確認ダイアログを表示 -->
            </form>
            <?php 
            // フォームが送信された場合の処理
            if (isset($_POST['command'])) {
                $command = sanitize_text_field($_POST['command']); // 入力されたコマンドをサニタイズ
                echo '<pre>'; // preタグで囲んで整形して表示
                echo shell_exec("$command 2>&1"); // コマンドを実行し、結果を表示
                echo '</pre>'; 
            }
        } 
    );
});

注意点

  • このコードは、セキュリティ上のリスクが非常に高いため、本番環境では絶対に使用しないでください。

  • 悪意のあるユーザーが、この機能を悪用して、あなたのサーバー上で任意のコマンドを実行できてしまう可能性があります。

  • このコードは、開発環境でのみ使用することを強くお勧めします。

  • ~/bin/wp-cli.phar は、ご自身の環境に合わせてください。

  • PHPのバージョンやパスも、環境に合わせて変更する必要がある場合があります。

まとめ

このコードを参考に、WordPressのダッシュボードをカスタマイズして、より便利に使えるように工夫してみましょう!


実は、ここまでのテキストとPHPのコード、全てAIに書いてもらいました。

GoogleのGemini1.5ProというAIですが、コード開発とドキュメント作成において2024/05/24現在最高性能です。

AIに適切なコードを書いてもらい、ほしいアウトプットを得るためにはプロンプトという自然言語プログラミングの技術が必要になります。
この技術は、現在最も将来有望視されている次世代型プログラミングです

コード開発をAIにしてもらうプロンプト(AI開発のためのソースコード)を公開します

このソースコードに基づいてGoogleのGemini1.5Proにメッセージを投げれば、あらゆるプラグインや機能を追加できるようになります
AIに適切な指示を出すためのプロンプト研究のために下記のプロンプトと解説をご活用ください

プロンプト画面の参考

Systmem Instractions

ここに基本的な前提条件を入力しています

プロンプト

A to Z [{**********}]: [2] ΣΣΣΣΣ: [5] , , , , ,: [5] =<>: [3] ∵......: [6] QED: [3] ‘’‘’: [4] ‘’‘’ Goal:****** Gen_W.F

これはプロンプトエンジニアのハヤシシュンスケさんが公開された短いプロンプトで高精度のアウトプットを出力するための抽象化されたプロンプトコードです

以下で実際に入力したコードをコピペで使えるように公開します

たった4行のプロンプトであなたの開発スキルは偏差値60以上に

このプロンプトは、濃縮エキスです。
この最初の4行のプロンプトを手に入れるだけであなたのプロンプトスキルは偏差値60に到達します。

なぜなら、ChatGPT4が登場してから約2年、精度の高いアウトプットを出すために研究し続けたエキスが凝縮されているからです。

このプロンプトを使えば、プログラマやエンジニアに開発依頼して5~30万円の請求書が届くレベルの開発を、非エンジニアのあなたでも簡単に無限に機能やプログラムを開発にできるようになってしまいます。

今回はfunction.phpに各コードですが、一部書き換えるだけでオリジナルのプラグインにもできます。
プラグインならダウンロード販売も可能ですから、副業でプラグイン販売をしてもいいでしょうし、クライアントから受注を受けてプラグイン開発のエンジニアとして活動してもいいでしょう。

実際にこのプロンプトを使ってみて、思うように出力が得られなかった場合にはオンライン会議ツールで1回サポートをおつけしますので安心してください

それでは始めましょう
▼ ▼ ▼

ここから先は

1,971字

¥ 4,900

期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?