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

この記事は現役ウェブディベロッパーがわかりやすさにこだわって作成しました

WordPressの設定やデータ更新作業を、管理画面に入ってするよりもっと効率的な方法はないですか??

WP-CLIはWordPressをコマンドラインで管理するためのツールです。これであれば管理画面で行っているすべてのことがコマンドラインでできます!

この記事でできるようになること!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公式リファレンスから引用、日本語訳しました。

CommandDescription
wp cacheキャッシュを管理する
wp cap実行権限を管理する
wp checksumWordPress(本体)チェックサムの照合を行う
wp cliWP-CLI(自身)の情報を取得する
wp commentコメントを管理する
wp config環境ファイル(wp-config.php)を管理する
wp coreWordPress管理(Download, install, update)およびインストールを行う
wp cronWP-Cronのイベントとスケジュール管理を行う
wp dbwp-config.phpのDB情報をもとに基本的なデータベース操作を行う
wp eval任意のPHPコードを実行する
wp eval-filePHPファイルを読み込んで実行する
wp exportWordPressデータをa WXR fileに出力する
wp helpGet help on WP-CLI, or on a specific command.
wp importa WXR fileからWordPressデータを取込む
wp language言語関連の操作を行う
wp mediaファイルの読み込みやサムネイルの作成など行う
wp menuメニューの作成、割当、削除等を行う
wp network 
wp optionオプションを管理する
wp packageManage WP-CLI packages.
wp pluginプラグインを管理する
wp post投稿データを管理する
wp post-type投稿種別を管理する
wp rewriteリライトルールを管理する
wp roleユーザー権限を管理する
wp scaffoldpost types, taxonomies, plugins, child themesなどの生成を行う
wp search-replaceデータベースの文字列を置換する
wp serverLaunch PHP’s built-in web server for this specific WordPress installation.
wp shell対話的にPHPを実行する
wp sitesite-wide 操作を実行する
wp super-adminWordPress multisiteを管理者権限で管理する
wp taxonomytaxonomiesを管理する
wp termtermsを管理する
wp themeテーマを管理する
wp transienttransientsを管理する
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」コマンドでもそのあたりを考慮して置換しているそうです(ちゃんと検証したわけではありませんが^^;)

 

Database Search and Replace Script in PHP | inter.connect
Search Replace DB is a powerful tool for developers, allowing them to run a search replace against their database where CLI tools or WP plugins can’t work.

 

 

 

WordPressをスマートにアップデート

 

 

WordPressのアップデート(アップグレード含む)は、WordPress公式リファレンスでも詳しく説明されています。

 

https://wpdocs.osdn.jp/WordPress_%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89

 

 

なにもアップデート処理をしないままでいると、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と BackWPUPプラグインを利用した WordPress の自動バックアップ&自動アップデート
WordPerssの wp-cron.php によるアップデートは 「いつ」実施されるかわからない バックアップをとってから、やってほしい という要望を満たすことが出来ません。 ので、もしサーバーで WP-CLI、BackWPUPプラグイン、そして cronが利用...

 

 

WP CLIを利用して、コア、プラグイン、テーマ、翻訳ファイルをアップデートする

 

WP CLIを利用して、コア、プラグイン、テーマ、翻訳ファイルをアップデートする - Qiita
WP CLIのアップデートをまず行う。(古いバージョンだとコアを最新版にアップデートした後、正しくWP CLIが動かない可能性があるため)WP CLIバージョンの確認$ wp cli versi…

 

WP-CLI導入時の失敗事例を紹介しています

【WordPress】root ユーザで WP-CLI を使ってインストール・セットアップしたい時のポイント
Vagrant のプロビジョニング時に WordPress をインストールしたいですの。 プロビジョニングは基…
PHP/Javascript/WORDPRESS案件全般承ります

この記事についてのご質問またはお困りのことがございましたら、お気軽にお問い合わせください。

タイトルとURLをコピーしました