【wp-cliの使い方】WordPressでバッチを作る方法
2021.12.27
現在、公開されている全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の導入方法を説明いたします。
以下の手順で基本的な環境で導入できると思います。
コマンドの細かいパスなどは導入する環境によって変わる為適宜変更してください。
- GitHubに上がっているwp-cli.pharファイルをダウンロードする
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
- Pharファイルの動作を確認する
php wp-cli.phar --info
- Pharファイルをwpというコマンドで動作するようにパスを通す
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
- 動作を確認する
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が用意してくれているコマンドを紹介しましたが、やはり自分で思う通りのバッチを作りたいと思います。
ここではその方法を紹介いたします。
- クラスファイルを作成する。
ymlファイルにファイルの位置を配置する為、ファイルはどこに配置しても構いません。
クラスファイルは以下の様な形で記載します。
この際、作成したクラス内の関数をコマンドで実行する為、起動用の関数を作成する事をおすすめします。
<?php
/**
* SendMail command.
*/
class TestCommand extends WP_CLI_Command {
function hoge() {
}
}
// コマンド名と作成したクラスを関連付ける
WP_CLI::add_command( 'test', 'TestCommand');
- ymlファイルを作成する
ymlファイルの配置場所はコマンドのパスを通した場所に配置します。
ymlファイル内には以下の記載をします。
require:
- 実行するクラスファイルのパス
- コマンドの実行
ここまで準備が完了したら、コマンドが実行できます。
今回の場合は以下のコマンドで実行できます。
wp test hoge
sudo権限が無いサーバーではどうしたらよいか
ここまでの解説で多くのサーバーでの導入は完了していると思います。
しかし、WordPressはレンタルサーバー等でも使われる事が多いです。
その為、sudo権限が得られずにWP-cliをwpコマンドとしてパスが通せない場合もあります。
せっかくWordPressが使えているのにコレはもったいないと思います。
その為、この項目ではパスを通さなかった場合の解説を行います。
xserverで導入した場合、デフォルトで設定されているPHPのバージョンが古いです。
その為、こちらの解説では使用するPHPも指定して動作させます。
環境によっては使えるPHPのバージョンが異なる為、調整してください。
- WP-cliの動作確認
/usr/bin/php7.2 ファイルのパス/wp-cli.phar --info
- 前項で作成したクラスの実行
ymlファイルを実行する場所に配置して以下のコマンドを実行する
/usr/bin/php7.2 ファイルのパス/wp-cli.phar test hoge
- crontabの設定
パスを通していない場合、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の可能性が拓けていけるのではないでしょうか?
関連