第32回WordBench大阪に参加して〜WP-CLIの情報だよ〜


今回は篠原電気株式会社で開催されました。
南森町で下車して、スマホのGoogle Mapを見ながら向かいます。
たぶんスマホなかったら迷子になっていたような気がする、、方向音痴だし。。。
と、とにかく、文明の利器のお陰で余裕でたどり着いたのでした。

プログラム

今回は、WP-CLIというWordPressをコマンドラインから操作しようというツールについてのお話です。

筆者は、

な風な使い方をしてますので、WP-CLIの恩恵を受けてます。
ならばそれに特化したセミナーなら出ないと!!ってなことで行ってきました。

参加者ブログ

思わず!おおお〜と思った情報

wp search-replace 古いURL 新しいURL (サーバー移転やURL変更が簡単!)

サーバー引っ越しが楽、シリアライズ対応!!してるし

WP-CLIを使うと簡単ですね!

2017.01.25補足説明

wp search-replace 古いURL 新しいURL –skip-columns=guid

のようにGUIDを変更しないオプションが推奨されてます。

※ –skip-columns=guid は、GUIDを変更しないというものです。公開前サイトからURL変更する場合には不要ですが、それ以外は基本的に GUIDの置換はしないことが望まれています。詳しくは、WordPress のドメイン名やURLを変える際の GUID 問題のちゃんとした話(CAPITAL P)で詳しく解説されているので参考にしてみてください(2017.01.25追記)

wp post create で投稿記事を作成できる(自動化がはかどるな!)

※自動取得したデータを整理して1つの記事に投稿とか出来そうだ。。。ローカルページとかに使えそうか。。

wpコマンドは移動できる(パスさえ通ってればね!)

https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar をダウンロードして、wp-cli.pharを wpに名前変更して、実行権限を与えた後に適当なパスにおけばいいってことですね。
パスの通し方は、検索してください。。。大抵はホームディレクトリ以下にbinフォルダでも作って、それ以下にいれといたらいいかな。
今いる場所は「pwd」コマンドが使えます。

これは今後使います。。。

WP-CLI概要

さて例のごとく下記はメモです。
※は、筆者の補足や感想です。

なんでも実行できてしまうけれど、WordPressインストールフォルダでしか実行できない制限があります。これはwp-config.phpを読み込んでデータベースにアクセスすることによって、パスワードを設定せずとも使えてしまうということ。

まぁそのユーザーでサーバーにログインしてますしね。

あと通常設定ではサーバー管理者権限が必要です。
ただしwpコマンドをパスの通ったユーザーディレクトリ以下におけばいけるんじゃないかと思います。
とはいえ、サーバーによってはコマンドに対する制限があったりするかもしれないですけどね。それは試してみないと分かりません。

※試した人(KATOさんだった)がいて、ヘテムルで「出来た〜」っていってました。
で、その方が実演された。。。おおお〜お疲れ様です。

<あの宮内さんからのコメント>
管理者権限が必要というより、ウェブサーバーと同じユーザーである必要があるって感じ〜

※コメントありです。。。そこでちょっとコアな部分を書いてみます。

環境によりますが、一般的なWordPress導入ではWordPress以下のフォルダについては、ウェブから書き込みをせねばならないため、ウェブサーバーのユーザー権限あるいはグループ権限に対して書き込み権限が必要です。
でもじゃあ、レンタルサーバーなどの場合、それぞれでWordPressをインストールできますよね。これは、だれでも書き込みにしているっていう危ない状況にしているか、あるいはsuEXECが有効なウェブサーバーを使っているかです。
たとえばApacheでsuEXECを有効にしていれば、各ユーザーの特定フォルダ以下にいれたものは、ウェブサーバー側としては、ユーザー権限で動作させることができます。そういう場合には、オーナーがユーザー権限でも動作し、WordPressもユーザー権限で動作させることができます。

ちなみにApacheの場合には、http://server-setting.info/centos/apache_suexec_php.html あたりに説明がありますね。私はCGIのみこの機能を使っています。

ちなみに、このsuEXECの場所って、Apacheをソースからコンパイルするなら、設定変更可能(DocRoot)ですが
yumとかrpmとかで入れちゃうと固定です。これを後から変更したい!って場合にはバイナリファイルの編集をすることになります。

suexec -Vにしたときに「-D AP_DOC_ROOT=”/var/www”」とかなっていると、/var/www以下でないとsuEXECは動かない縛りとなります。シンボリックリンクの技は使えません。

でどうするかというと、
http://shylock54.blogspot.jp/2010/10/cgi.html
な方法をするんです。トリッキーなのですが、参考までに。

WP-CLIって何?

WP = WordPress
CLI = Command Line user Interface.

ってことで、WordPressをコマンドラインから操作しようってことです。

いろんなところで「真っ黒画面」と紹介されているアレですよ。
まぁ、Macの場合には白い画面なんですけどね。。

WP-CLIって何ができるの?

  • WordPressのインストールやアップデート
  • テーマ・プラグインの操作
  • メニューやサイドバーの管理
  • 記事の投稿、固定ページの操作
  • ユーザーの追加、削除などの管理
  • データベース周りの操作

など管理画面で出来ることが、ほぼ全て出来る。

※1,2しか使ってないな・・・。

WP-CLIを何故使うの?

時と場合によっては便利だから。

例:テスト投稿を100件投稿したい!!

  1. 記事を複製できるDupulicate Postプラグインなどを使う
  2. WP Ultimate CSV Importer Plugin を使って、Excelか何かで連番CSVを作成し、それを読み込ませる。
  3. 自力で頑張る!!
    などなど、でも面倒ですよね。。。。

WP-CLIの場合には、

wp post generate --count=100 --post_type=post

だけでできちゃうんですよ。
すごくないですか?

wp post list

でどれだけ投稿されたか確認できますが、管理画面の投稿一覧を見ると100個投稿されてますよね?

※おお〜、そんな使い方は思ってなかった。。。

強制全消しは
wp post delete --force
※これは怖いから実環境でやっちゃだめよ〜

さらに処理が速いですよね。すぐ終わります。

処理の自動化や繰り返し実行

これが得意とするところなんです。
特定のプラグインを自動的にアップデートするとかね。

※1つのサーバーに入れたWordPressすべてに、同じプラグインを一括インストールすることも可能かな。それやってないから、今度仕事でWordPress立ち上げる時に、そのスクリプトつくろうかな。

WP-CLIのデメリット

  • 基本的なコマンドを覚える必要あり(ログインというのも覚えなければ)
  • グラフィカルじゃない
  • 図形などの編集には向かない

※xy座標データから曲線を出すのは出来ますけどね
(昔、大学でMathematica使ったなぁ。。。)

WP-CLIの環境要件

  • UNIX Like(MacOSX, Linux, FreeBSD, Cygwin(Windows))
  • PHP 5.3.2以上のバージョン
  • WordPress 3.5.2以上のバージョン
  • SSHクライアント

SSHクライアントって?

サーバーにログインするためのツールが必要。

Macなら標準搭載の「ターミナル」アプリを使える。

※Windowsなら、Teraterm, Puttyなど。私はPuttyを愛用してるけど。。telnet時代はTeratermだったんですけどね。

WP-CLI導入方法

※上記に導入方法が詳しく書かれていますが、不安なら「WP-CLI 導入」で検索すればいいと思います。

※もちろんサーバーにログインさせてもらえるサーバーでないと使えません。

ローカルでサーバーを立ち上げ

発表者のモリタクさんは、Mac上でVagrantを構築して使っておられました。

にはMAMPの紹介があると思います。

※これはMacのツールなのですが、以前その構築法方法を

にアップしたので参考に出来るかもしれません。

実演

記事投稿

wp post create –post_title=’test’ –file ファイル名 –post_type=post

とか。

wp post create –post_title=’test’ –post_content ‘テストだよん’ –post_type=post

とか。。。

直接公開の場合には、 –post_status=publish にすればいい。

おおお〜、自動化がいろいろできちゃう。。。

引っ越しが楽だよ(search-replace)<参加者からのツッコミ>

wp search-replace
“`usage: wp search-replace [

…] [–network] [–skip-columns=] [–dry-run] [–recurse-objects]“`

おおー確かにシリアライズ問題があって、データベースをそのまま置換しただけでは、たとえばBackWPUPの設定が引き継がれないなどの問題があります。

このreplaceは上書きしちゃうので、

wp db export wordpress.sql

としてデータベースをバックアップしておいてくdさい。

wp search-replace http://localhost:8888/wordpress http://localhost:8888/wordpress-replace

ってした上で、wordpressフォルダをwordpress-replaceへリネームするとよい。
他のサーバならコピーになるかな。

これだけ。

失敗したら、
wp db import wordpress.sql
で戻すこともできるし、

wp search-replace http://localhost:8888/wordpress-replace http://localhost:8888/wordpress

と逆に前のやつに戻せばいい。

おおおおおおーーーー!!!!

今回一番役立った情報だ〜、、、これでsedやもろもろもツールを自作していたのが不要になるじゃん!!!!

※付録 -MAMPを使ってWP-CLI実行-

話を横目に、筆者が実際に試してみました。
時間制限があるのですが下記ぐらいまでは確認しました。
MacOS 10.9.4の端末です〜。

MAMPを導入し、そこにWordPressをインストールしたと過程します。

  • MAMP導入:アプリケーション→MAMP(フォルダ)
  • WordPress導入場所:アプリケーション→MAMP→htdocs→wordpress(フォルダ)
  • PHPのバージョン:PHP5.5.10と過程
    ※MAMPを起動して設定→PHPを見て下さい。

と過程します。

WP-CLIの導入

  1. ターミナルを起動してください
  2. curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar をタイプしてEnter
  3. chmod +x wp-cli.phar をタイプしてEnter
  4. sudo mv wp-cli.phar /usr/local/bin/wp をタイプして、MacのログインパスワードをタイプしてEnter(パスワードを設定していなければsudoが使えないかもしれません)

これで /usr/local/bin/wp に入ったはずです。

/usr/local/bin/wp –info をタイプしてEnterすることで動作しているかどうか
わかります。

WP-CLIコマンド「wp」のパスを通す

後はPATH(パス)を通します。コマンドwpを、wp –info などのように実行するためには、実行ファイルがどこに置いてあるのか登録する必要があります。そのことをパスを通すと言います。

/usr/local/bin に対してパスを通したことなんてないよって方は、まず

wp --info

とタイプしてみてください。
Command not found など言われたらパスが通っていません。

touch ~/.profile

でファイルがなければ、ファイルを作成した上で

open -a textedit ~/.profile

をタイプしてEnterしてみてください。これでテキストエディタで、.profileファイルが開きます。

で末尾に
export PATH=/usr/local/bin:$PATH'
を追加して保存してください。

後は有効にするために
source ~/.profile
で設定を読み直しましょう。

※今回、.profileを使いました。これはsh系とbash系シェルで使えます。bash専用なら、.bash_profileがよいでしょう。tcsh系なら、.cshrc です。それらについて分からなければUNIX系のSHELLについて勉強してみてください。

MAMPのPHPパスを通す

MAMPのPHPを使う必要があります。
Macでは/usr/bin/php にPHPがありますが、これよりMAMPのPHPを優先的に使う設定にするというものです。

つまり導入したWordPressフォルダにて
wp --info
を実行した場合に、PHP binaryが、MAMP以下のPHPが指定されている必要があるってことです。やってみましょう。

  1. ターミナルを起動してください
  2. cd /Application/MAMP/htdocs/wordpress
  3. export PATH=/Application/MAMP/bin/php/php5.5.10/bin:$PATH をタイプしてEnterし、パスを「一時的」の通します(ターミナルを終了するまで)
  4. wp –info で、PHP binaryが「/Application/MAMP/bin/php/php5.5.10/bin/php」になっていることを確認

これで、wp theme status とかすると、導入されているテーマ一覧および有効化(先頭にAが付いている)されているテーマ一覧が出てきます。

こちらのパスは一時的のほうが好ましいと思います。
まぁ他にPHPなんて使わんという人は、

open -a textedit ~/.profile

で.profileを開いて、ここの末尾に
export PATH=/Application/MAMP/bin/php/php5.5.10/bin:$PATH
を末尾に追加しておいたらいいでしょう。

MySQL周りのロックファイルの処理をする

ターミナルのコマンドで、

sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

をタイプしておくとよいでしょう。

で、

  1. cd /Application/MAMP/htdocs/wordpress
  2. wp db export text.sql

でWordPressのデータベースエクスポート機能を使って、MySQLのデータベース内のデータをバックアップできます!

2014年8月24日 木谷

広告

第32回WordBench大阪に参加して〜WP-CLIの情報だよ〜」への2件のフィードバック

  1. ピンバック: 第32回 WordBench 大阪 「WP-CLIでWordPressを便利に使ってみよう」に行ってきました – エコテキブログ

  2. ピンバック: WordPress REST API に OAuth でログインしてみた | notnil creation weblog

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中