コマンドラインツール「wp-cli」を利用したWordPressプラグインアップデートの自動化


通常は、

が非常に詳しく説明されているので、これをみたらいいと思います。
でもgitコマンド入れてないよとか、いろいろしがらみ(yumパッケージ依存等)があって、手動インストールしたいんじゃ〜という方は参考になるかもしれません。

ダウンロード

% curl -L https://raw.github.com/wp-cli/builds/gh-pages/phar/wp-cli.phar > wp-cli.phar

% php wp-cli.phar –info

PHP binary:
PHP version:    5.x.x
php.ini used:   /etc/php.ini
WP-CLI root dir:        phar://wp-cli.phar
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 0.13.0

のようにエラーなく出てくれば導入成功です。

% chmod +x wp-cli.phar
% mv wp-cli.phar /usr/local/bin/wp

などパスが通っている場所に、wpという名前に変更しておきましょう。

問題1)wgetで「ERROR: cannot verify raw.github.com’s certificate」が出た

次のようにルート証明書を取得して、wgetの環境設定に記載してあげてください。

暫定対応としては、wget –no-check-certificate オプションが使えますが、今後のことを考えるとお勧めできません。

# mkdir /etc/CA
# cd /etc/CA
# wget http://curl.haxx.se/ca/cacert.pem
# vi /etc/wgetrc
ca-certificate=/etc/CA/cacert.pem

なおcurlについては

# cd /etc/pki/tls/certs/
# cp -p ca-bundle.crt  ca-bundle.crt.org
# curl http://curl.haxx.se/ca/cacert.pem  >  cacert.pem
# mv cacert.pem  ca-bundle.crt

とルート証明書を入れ替えてみてください。

問題2)PHP Fatal error:  Uncaught exception ‘PharException’

% php wp-cli.phar –info

これで上記エラーが出てしまった場合には

のほうを使ってみて下さい。

※参考情報:https://github.com/wp-cli/wp-cli/issues/942

インストール

# chmod +x wp-cli.phar
# cp -p wp-cli.phar /usr/local/bin/wp

/usr/local 以下にソフトを導入されている場合には、上記を使うとよいはずです。
MacOSXなどは/usr/bin/wp に入れる場合もあるかもしれません。まぁMacOSXの方は自動インストールを使うでしょうから、そんなに悩む必要はないかなと思います。

使い方

# cd  /hogehoge/wordpress

※WordPressがインストールされているフォルダに移動してください。

プラグインの状態を調べます

#  wp plugin status

プラグインを更新します

#wp plugin update プラグイン名

例)プラグインまるごと自動更新

# wp plugin list | grep available | cut -d '|' -f 2 | awk  '{print "wp plugin update "$1}'  | bash

です。一度プラグインリストを確認したければ

# wp plugin list | grep available | cut -d '|' -f 2 | awk  '{print "wp plugin update "$1}'

としてアップデートコマンドを表示させればいいかと思います。
というか必ず自分がアップデートしたプラグインリストを保存しておいてください。
後からアップデートで失敗したときのトラブルシューティングに役立つためです。

wp plugin update link-library
wp plugin update postie

などのようなものがならぶでしょう。それコピー&ペーストでメモっておきましょう。

例)「contact-form-7」を含まないプラグインを自動更新してみる

いや筆者はこれをちょろっといじったサイトがあったので例にあげてみます。

# wp plugin list | grep available | cut -d '|' -f 2 |  grep -vi "contact-form-7" | awk '{print "wp plugin update "$1}' | bash

例)contact-form-7とbackwpupを含まないプラグインを自動更新してみる(二つ以上の除外があった場合)

# wp plugin list | grep available | cut -d '|' -f 2 |  egrep -vi "contact-form-7|backwpup" | awk '{print "wp plugin update "$1}' | bash

アップデートできないものがあるよ!

PHP Warning:  wp backwpup: addCommand is deprecated

とか出てきたら、念のため再度アップデートコマンドを叩きましょう。
別の物がはいっていないと(よくあるのは特定プラグインが入っていないとアップデートできないとか)アップデートできないもの(backwpupとbackupwp-proの関係)もあるためです。

応用編

このようにプラグイン(それだけでなくWordPress本体も)がコマンドラインでアップデートできるなら、cronを使って

  1. WordPress本体のバックアップ
  2. データベースのバックアップ
  3. プラグイン/  本体バージョンアップ
  4. メール通知

というのが自動で出来ちゃいますね。

おおおおおっ、ってかWordPress本体にそういう機能いれようよ〜(WordPressの自動更新機能いれたんだから)とは思いますが、これを無効にしてこっちでやるってのがシステム管理者としては心穏やかになるかなと思いますね。

なおbackwpupプラグインには、コマンドラインから実行できるスクリプトが用意されています。
これと組み合わせると「1」「2」は自動化できます。というかbackwpupはフリー版でもWP-CLI対応してますね。

まずはもう少し検証してみようかなぁと思います。

BackwpupプラグインでWP-CLIを使ってみよう

# wp

とタイプすると、おおっbackwpupパラメータがあるじゃないか!

# wp backwpup

とすると使い方がでてきます。

まずはジョブ名とそのIDを表示します。

# wp backwpup jobs

で、

# wp backwpup start --jobid=1

が利用できます(2016年4月21日現在)。2014年1月8日時点では下記の問題がありましたが、すでに修正されていますね。

の問題があって現在できないようですね…次のbackwpupで直るようなので待つかな

2014年1月8日 木谷

広告

コマンドラインツール「wp-cli」を利用したWordPressプラグインアップデートの自動化」への3件のフィードバック

  1. ピンバック: セッションのご紹介「世界の最前線!VagrantやWP-CLIなどで開発環境をパワーアップ!」 | WordCamp Kansai 2014

  2. ピンバック: 第32回WordBench大阪に参加して<WP-CLIの情報だよ〜> | Kimiya Kitaniの徒然なるブログ

  3. ピンバック: 第32回WordBench大阪に参加して〜WP-CLIの情報だよ〜 | Kimiya Kitaniの徒然なるブログ

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中