はじめに
プラグインを作成するのは、WordPressのアーキテクチャを理解するのによい勉強になったのですが、WPのデータを扱うのにいちいちSQLを書くのも面倒なので、なにかいいツールはないかといろいろさがしていましたが、灯台下暗しでした。
WP-CLIはWordPressをコマンドラインで管理するためのツールです。これでやりたいことが簡単にできそうです。
インストール
WP-CLIがインストールされていない場合は、次の方法でインストールします。
WP-CLIファイルをダウンロードします
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
パスを通します
php wp-cli.phar --info chmod +x wp-cli.phar sudo mv wp-cli.phar /usr/local/bin/wp
2019/1/8 追記 ここから
もしくは~/.bashrcに次のコードを追加して、wpコマンドが使えるようにエイリアスを設定します。
alias wp="~/bin/wp-cli.phar"
※ダブルクォート内はwp-cli.pharのパスを指定する
2019/1/8 追記 ここまで
2019/2/28 追記 ここから
KUSANAGI FOR VAGRANT 環境の場合はROOT権限で実行すると常に–ALLOW-ROOTオプションが必要になります。そこで、WPを使用するときはKUSANAGIユーザーで動作するように設定します。
alias wp='sudo -u kusanagi -- /usr/local/bin/wp'
※wp-cli.pharは、実行権限を付加した後にwpにリネームして/usr/local/bin/フォルダに置くようにします。
※WP-CLIのコマンドを実行しようとすると突然エラーが出るような場合は、プラグイン(更新)が影響していることがあります。ワーニングが出る場合も、プラグインの影響が考えられます。必要なプラグインもありますので、原因がわかってる場合は、WP-CONFIG.INIのDEBUGモードをOFFにして通常は表示しないようにしておきます。
※Elementorプラグインが原因のエラーに何度が遭遇しました。相性があまり良くないようです
※XDEBUGとデバッガを使用している場合、動作しないことがあるのでXDEBUGを無効にするかデバッグを停止しておきます。
2019/2/28 追記 ここまで
WP-CLIコマンド
GUIで行うことは基本的にほぼ網羅しているみたいです。データベースを直接いじらないとできなかったこともWP-CLIでは簡単にできるようですね。
WordPress公式リファレンスから引用、日本語訳しました。
Command | Description |
---|---|
wp cache | キャッシュを管理する |
wp cap | 実行権限を管理する |
wp checksum | WordPress(本体)チェックサムの照合を行う |
wp cli | WP-CLI(自身)の情報を取得する |
wp comment | コメントを管理する |
wp config | 環境ファイル(wp-config.php)を管理する |
wp core | WordPress管理(Download, install, update)およびインストールを行う |
wp cron | WP-Cronのイベントとスケジュール管理を行う |
wp db | wp-config.phpのDB情報をもとに基本的なデータベース操作を行う |
wp eval | 任意のPHPコードを実行する |
wp eval-file | PHPファイルを読み込んで実行する |
wp export | WordPressデータをa WXR fileに出力する |
wp help | Get help on WP-CLI, or on a specific command. |
wp import | a WXR fileからWordPressデータを取込む |
wp language | 言語関連の操作を行う |
wp media | ファイルの読み込みやサムネイルの作成など行う |
wp menu | メニューの作成、割当、削除等を行う |
wp network | |
wp option | オプションを管理する |
wp package | Manage WP-CLI packages. |
wp plugin | プラグインを管理する |
wp post | 投稿データを管理する |
wp post-type | 投稿種別を管理する |
wp rewrite | リライトルールを管理する |
wp role | ユーザー権限を管理する |
wp scaffold | post types, taxonomies, plugins, child themesなどの生成を行う |
wp search-replace | データベースの文字列を置換する |
wp server | Launch PHP’s built-in web server for this specific WordPress installation. |
wp shell | 対話的にPHPを実行する |
wp site | site-wide 操作を実行する |
wp super-admin | WordPress multisiteを管理者権限で管理する |
wp taxonomy | taxonomiesを管理する |
wp term | termsを管理する |
wp theme | テーマを管理する |
wp transient | transientsを管理する |
wp user | ユーザーを管理する |
wp widget | ウィジェットを管理する |
データベースのバックアップと復元
例えば、データベースのデータをファイルにバックアップしたり、バックアップファイルからデータベースを復元したりするようなことは、WP-CLIコマンドの「wp db …」を使用すれば簡単にできるようになります。
mysqldumpを使ってMYSQLをコマンドラインで操作すると、いろいろ面倒な引数を渡してデータベースにアクセスしなくてはいけませんが、WP-CLIでデータベースをアクセスする場合、バックアップファイル名さえ指定すればよいのです。
バックアップコマンド
wp db export バックアップファイル名
たったこれだけでバックアップ完了です。。。
復元コマンド
wp db import バックアップファイル名
復元もオプションをimportに変えるだけ。
転送先ドメイン名の変更
データベースを異なるURLの別サーバーに持っていった場合、オプションに登録されているサイトURLを新しいサイトのURLに変更してやる必要があります。
以前、「【WordPress】IDCFクラウドの無料オブジェクトストレージでミラーサイトをつくってみた」で次のようなSQLをわざわざ作ったメモを残していましたが、こんなものはもう不要です!!
update wp_options set option_value='ミラーサイトのURL' where option_name='siteurl' or option_name='home' ;
次のコマンドを流すだけで、オプションだけでなく、データベース内で使われているすべてのURLが新しいURLに置き換わります。
wp search-replace '元サイトのURL' '新しいサイトのURL'
ちなみに、オプション設定のURLだけなら単純に古いURLを新しいURLに置き換えるだけでよいのですが、データベース内のURLにはURLのサイズ等を保持している場合があるため、単純な文字列変換だけではだめなようです。
こちらのサイトで提供されているようなWordPress引っ越し専用のスクリプトを使えば間違いがありませんが、「wp search-replace」コマンドでもそのあたりを考慮して置換しているそうです(ちゃんと検証したわけではありませんが^^;)
WordPressをスマートにアップデート
WordPressのアップデート(アップグレード含む)は、WordPress公式リファレンスでも詳しく説明されています。
なにもアップデート処理をしないままでいると、WordPressの新しいバージョンがでるたびに管理画面でに通知があります。管理画面で更新ボタンをポチポチクリックしてアップデートしてもよいのですが、WP-CLIコマンドではそこらあたりの処理がワンライナーで記述することができます。
スクリプトをCRONに設定すると、自動化することもできるのでとても楽です。
WordPress本体のアップデート
wp core update
これで、最新版のWordPressへのアップデートは完了です。
WordPressプラグインのアップデート
プラグインのアップデートも管理画面で更新ボタンをポチポチクリックしてアップデートするかわりに、WP-CLIコマンドを使用するとワンライナーでアップデートが可能です。
–all と指定することで、インストールされているすべてのプラグインが対象になります。
wp plugin update –all
WordPressテーマのアップデート
これも –all と指定することですべてのテーマが対象になります。
テーマに関しては、テーマの機能追加や構造変更によって表示崩れが起こる可能性もあるため、親子テーマの形でカスタマイズしてある場合は特に気をつけるようにしてください。
wp theme update –all
翻訳のアップデート
日本語環境で利用している場合、翻訳ファイルのアップデートも必要です。
プラグインなどで独自の翻訳を行っている場合、翻訳内容が書き変わってしまう可能性もあるため、注意してください。
wp core language update
まとめ
WordPressがもともとはただのブログCMSだったのがこれだけメジャーになったのはデータベース構造がシンプルで手の加え甲斐があるからでしょうね。
このサイトで公開している「簡単!バックアップ&リストアプラグイン」はこのWP CLIを使用しています。
バックアップやリストアはシェルスクリプトで記述したのですが、とてもシンプルになりました。ただ、データベースのアクセスが遅いのがたまにキズですが^^;
参考
エクスクラウドというサーバーのサポートブログですが、WP-CLIの使い方が詳しく載っています
https://tech.ex-cloud.jp/archives/1259
【備忘録】WP-CLIと BackWPUPプラグインを利用した WordPress の自動バックアップ&自動アップデート
WP CLIを利用して、コア、プラグイン、テーマ、翻訳ファイルをアップデートする
WP-CLI導入時の失敗事例を紹介しています