【wp-cliの使い方】WordPressでバッチを作る方法

Webサイト制作
2021.12.27
wp-cliの使い方

現在、公開されている全WEBサイトの内約40%がWordPressで作られていると言われています。
WordPressで作られたサイトはm通常のWEBサイトだけでなくECサイトやレビューサイト等も存在します。
これらはプラグインを導入するだけで同様の機能が作成できるようになっており導入コストが低くとても運用しやすいです。
しかし、WordPressを使い込んでいくと殆どの作業で管理画面からの操作が必要になります。
そんな時、WordPressもPHPで作られているのだからPHPでバッチ処理を作りたいと思ったことはないでしょうか?
今回はPHPでWordPressのバッチを作成する方法「WP-cli」について解説していきます。

WP-cliとは

WP-cliとはWordPress管理用のコマンドラインインターフェースです。
様々な企業のサポートにより現在(2021年12月)もメンテナンスさています。
WP-cliを利用する事で、用意されたコマンドを利用する事ができます。
また、デフォルトで用意されているコマンド以外にも自分で作成したプログラムを動作させる事ができます。
WP-cliで動作したプログラム内ではWordPress内で用意されている関数が利用できる為、投稿の取得やカスタムフィールドの取得。
更には、新しい記事の投稿やカスタムフィールドの更新等まで行えてしまいます。
また、WP-cliのコマンドはcrontabに設定できる為、時限式に動作させる事も可能です。

WP-cliの導入方法

まずはWP-cliの導入方法を説明いたします。
以下の手順で基本的な環境で導入できると思います。
コマンドの細かいパスなどは導入する環境によって変わる為適宜変更してください。

  1. GitHubに上がっているwp-cli.pharファイルをダウンロードする
  2. curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
    
  3. Pharファイルの動作を確認する
  4. php wp-cli.phar --info
    
  5. Pharファイルをwpというコマンドで動作するようにパスを通す
  6. chmod +x wp-cli.phar
    sudo mv wp-cli.phar /usr/local/bin/wp
    
  7. 動作を確認する
  8. wp --info
    

    このコマンドでWP-cliの状態のメッセージが表示されたら導入成功となります。

参考:WP-cli公式サイト – インストール方法

WP-cliのコマンド

WP-cliは導入するだけで様々なコマンドがすぐに使用できます。
自作のバッチを作らなくても、こちらのコマンドをcrontab等で時限設定するだけで今までWordPressだけではできなかった制御が出来るようになります。
以下はその一例となります。

テーマ操作

  • テーマの切り替え
  • wp theme activate テーマ名
    
  • テーマのアップデート
  • wp theme update テーマ名
    
  • 全てのテーマのアップデート
  • wp theme update --all
    

    プラグイン操作

  • プラグインのアップデート
  • wp plugin update プラグイン名
    
  • 全てのプラグインのアップデート
  • wp plugin update --all
    
  • プラグインの有効化
  • wp plugin activate プラグイン名
    
  • プラグインの無効化
  • wp plugin deactivate プラグイン名
    

    キャッシュ操作

  • キャッシュのクリア
  • wp cache flush
    

    コマンドの全ては公式ページのコマンド一覧を参照してください。

    WP-cliで自作のクラスを動作させる方法

    前項でWP-cliが用意してくれているコマンドを紹介しましたが、やはり自分で思う通りのバッチを作りたいと思います。
    ここではその方法を紹介いたします。

    1. クラスファイルを作成する。
    2. ymlファイルにファイルの位置を配置する為、ファイルはどこに配置しても構いません。
      クラスファイルは以下の様な形で記載します。
      この際、作成したクラス内の関数をコマンドで実行する為、起動用の関数を作成する事をおすすめします。

      <?php
      /**
       * SendMail command.
       */
      
      class TestCommand extends WP_CLI_Command {
          function hoge() {
          }
      }
      
      // コマンド名と作成したクラスを関連付ける
      WP_CLI::add_command( 'test', 'TestCommand');
      
    3. ymlファイルを作成する
    4. ymlファイルの配置場所はコマンドのパスを通した場所に配置します。
      ymlファイル内には以下の記載をします。

      require:
        - 実行するクラスファイルのパス
      
    5. コマンドの実行
    6. ここまで準備が完了したら、コマンドが実行できます。
      今回の場合は以下のコマンドで実行できます。

      wp test hoge
      

    sudo権限が無いサーバーではどうしたらよいか

    ここまでの解説で多くのサーバーでの導入は完了していると思います。
    しかし、WordPressはレンタルサーバー等でも使われる事が多いです。
    その為、sudo権限が得られずにWP-cliをwpコマンドとしてパスが通せない場合もあります。
    せっかくWordPressが使えているのにコレはもったいないと思います。
    その為、この項目ではパスを通さなかった場合の解説を行います。

    xserverで導入した場合、デフォルトで設定されているPHPのバージョンが古いです。
    その為、こちらの解説では使用するPHPも指定して動作させます。
    環境によっては使えるPHPのバージョンが異なる為、調整してください。

    1. WP-cliの動作確認
    2. /usr/bin/php7.2 ファイルのパス/wp-cli.phar --info
      
    3. 前項で作成したクラスの実行
    4. ymlファイルを実行する場所に配置して以下のコマンドを実行する

      /usr/bin/php7.2 ファイルのパス/wp-cli.phar test hoge
      
    5. crontabの設定
    6. パスを通していない場合、ymlファイルが読み込まれません。
      その為、設定するコマンド内に読み込むファイルを直接記載します。
      同様に実行したいWordPressのパスも記載する。
      ymlに記載している内容はオプションとしてコマンド実行時に記載する事ができます。
      逆も同じなので、実行するWordPressの配置場所はymlが読み込まれる場合はymlに記載しても問題ないです。
      以下の設定で毎分起動する様になります。
      詳しくはcrontabの設定方法を参照ください。

      * * * * * /usr/bin/php7.2 ファイルのパス/wp-cli.phar test hoge --path=実行するWordPressの配置場所のパス --require=実行するクラスファイルのパス
      

    活用案

    ここまででWP-cliは導入できたと思います。
    WP-cliは現在WordPressではできない事を出来るようにしてくれます。
    個人的に便利な活用方法としては、メールマガジン等の運営に使用するととても活用出来るかと思います。
    記事をメールと見立てて、カスタムフィールドを宛先にする等細かい設定が出来ると思います。
    カスタムフィールドをデータベースの様に使用すればWordPressの可能性が拓けていけるのではないでしょうか?

    SEOやWEB制作に関する情報を検索する

    コラム

    最新コラム

    人気コラム

    過去の記事

    ご質問やご相談などお気軽にお問い合わせください。