ブログ技術

【WordPress】WP-CLIを利用してスマートにWordPressデータをあつかう

 

 

 

はじめに

 

プラグインを作成するのは、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導入時の失敗事例を紹介しています