WordPress運用にwp-cliを使ってみる
WordPressのテーマを変更してみる
wp-cliが威力を発揮するのは、WordPressインストールの自動化だけではありません。WordPressの管理画面にブラウザからログインせずに、様々な処理を行うことができます。見た目に分かりやすいところで、テーマを変更してみましょう。その前に、wp-cliを引数なしで実行してヘルプを表示させます。
# wp Error: YIKES! It looks like you're running this as root. You probably meant to run this as the user that your WordPress install exists under. If you REALLY mean to run this as root, we won't stop you, but just bear in mind that any code on this site will then have full control of your server, making it quite DANGEROUS. If you'd like to continue as root, please run this again, adding this flag: --allow-root If you'd like to run it as the user that this site is under, you can run the following to become the respective user: sudo -u USER -i -- wp <command> # echo $? 1
いきなりエラーとなってしまいました。どうやらrootでの実行は好まれないようです。しかし、引数に--allow-root
を付けると、rootユーザーでも実行できます。
# wp --allow-root | cat | head NAME wp DESCRIPTION Manage WordPress through the command-line. SYNOPSIS
それでは気を取り直して、まずは現在インストールされているテーマ一覧を見てみましょう。
# wp --allow-root theme list --path=/home/vhosts/www.example.com/public_html/ +----------------+----------+--------+---------+ | name | status | update | version | +----------------+----------+--------+---------+ | twentyfifteen | active | none | 1.2 | | twentyfourteen | inactive | none | 1.4 | | twentythirteen | inactive | none | 1.5 | +----------------+----------+--------+---------+
次に、spring
という名前を含んでいるテーマを検索してみます。
# wp --allow-root theme search spring --path=/home/vhosts/www.example.com/public_html/ Success: Showing 2 of 2 themes. +---------------+---------------+--------+ | name | slug | rating | +---------------+---------------+--------+ | Spring Song | spring-song | 100 | | Tender Spring | tender-spring | 100 | +---------------+---------------+--------+
このように2件見つかりました。それでは、最初に見つかった「Spring Song」をインストールし、即有効化してみましょう。wp-cliに与える引数は、スラッグで指定します[3]。
# wp --allow-root theme install stargazer --path=/home/vhosts/www.example.com/public_html/ Installing Stargazer (1.2.1) https://downloads.wordpress.org/theme/stargazer.1.2.1.zip からインストールパッケージをダウンロードしています… パッケージを展開しています… テーマをインストールしています… テーマのインストールが完了しました。 Success: Translations are up to date. # wp --allow-root theme install spring-song --activate --path=/home/vhosts/www.example.com/public_html/ Installing Spring Song (1.0.0) https://downloads.wordpress.org/theme/spring-song.1.0.0.zip からインストールパッケージをダウンロードしています… パッケージを展開しています… テーマをインストールしています… テーマのインストールが完了しました。 Success: Translations are up to date. Activating 'spring-song'... Success: Switched to 'Spring Song' theme.
上記のメッセージのように、インストールが完了し、アクティベートされると成功です。それではブラウザをリロードしてみましょう。図3のように、テーマが変更されたことを確認してみましょう。
[3] 親テーマとしてstargazerが必要なので、先にこれをインストールします。
ブログに新しい記事を投稿してみる
wp-cliは、WordPressができることの多くを網羅しています。何ができるかを知るために、wp-cliのビルトインコマンド一覧 を一読することをおすすめします。この一覧はサンプルも多く、やりたいこととコマンドが直感的に結びつくかと思います。
それでは最後に、ブログに新しい記事を投稿してみましょう。その前に、現在の投稿一覧を表示してみます。
# wp --allow-root post list --path=/home/vhosts/www.example.com/public_html/ +----+--------------+-------------+---------------------+-------------+ | ID | post_title | post_name | post_date | post_status | +----+--------------+-------------+---------------------+-------------+ | 1 | Hello world! | hello-world | 2015-05-20 16:12:51 | publish | +----+--------------+-------------+---------------------+-------------+
表示されたのは、WordPressがインストールされた直後、自動的に公開される投稿です。それでは、投稿の下書きをテキストファイルで生成して、これを読み込んで投稿してみましょう。
# cat << _EOL_ | tee post-content.txt > 一撃シェルスクリプト is つよい > 一撃シェルスクリプト is not 電撃ネットワーク > _EOL_ # wp --allow-root post create ./post-content.txt --post_title='一撃シェルスクリプト 出撃!' --path=/home/vhosts/www.example.com/public_html/ Success: Created post 3.
成功のメッセージが出ました。それでは投稿ステータスの詳細を見てみましょう。もちろん、コマンドラインから見てみます。
# wp --allow-root post get 3 --path=/home/vhosts/www.example.com/public_html/ +-----------------------+-----------------------------------------------+ | Field | Value | +-----------------------+-----------------------------------------------+ | ID | 3 | | post_author | 0 | | post_date | 2015-05-20 17:03:06 | | post_date_gmt | 0000-00-00 00:00:00 | | post_content | 一撃シェルスクリプト is つよい 一撃シェルスクリプト is not 電撃ネットワーク | | post_title | 一撃シェルスクリプト 出撃! | | post_excerpt | | | post_status | draft | | comment_status | open | | ping_status | open | | post_password | | | post_name | | | to_ping | | | pinged | | | post_modified | 2015-05-20 17:03:06 | | post_modified_gmt | 0000-00-00 00:00:00 | | post_content_filtered | | | post_parent | 0 | | guid | http://www.example.com/?p=3 | | menu_order | 0 | | post_type | post | | post_mime_type | | | comment_count | 0 | +-----------------------+-----------------------------------------------+
投稿はされましたが、post_statusがdraft(下書き)のままです。これをpublish(公開)に変更して、Webブラウザで読めるようにしてみます。
# wp --allow-root post update 3 --post_status=publish --path=/home/vhosts/www.example.com/public_html/ Success: Updated post 3. # wp --allow-root post get 3 --path=/home/vhosts/www.example.com/public_html/ | grep post_status post_status publish
post_statusがpublishになったので、ブラウザで見てみましょう。図4のように、トップページの表示が変わりました。タイトルをクリックしてみると、図5のように投稿した記事が表示されます。
1つだけ、注意事項があります。これまでに手動で実行したwp
コマンドはすべてrootユーザーが--allow-root
を付けて実行しました。ですので、ダウンロードしたテーマファイルがすべてオーナー、グループともにrootになっています。このままにしておくと、ブラウザからテーマやプラグインのアップデートを行う際、書き込みエラーがおきてしまいますので、su - nginx --shell=/bin/bash --command="/usr/local/bin/wp ……"
を付けて実行するか、ドキュメントルート以下のオーナーをnginxに、グループにWEB管理用の一般ユーザーに設定し、グループに書き込み権限を与えるなどの処置を行うとよいでしょう。
おわりに
いかがでしたでしょうか。3回にわたり、シェルスクリプトで実用的なサーバー構築を行うというテーマを取り上げてみましたが、ほぼディストリビューション標準のコマンド群でサーバー構築の自動化ができることがお分かりいただけたかと思います。
作業品質の向上、均一化はサーバー構築だけでなく、運用フェーズでこそ重要になるスキルです。極力人の手を介さず、どんな仕事も一撃で終わらせることこそ、我々エンジニアだけでなくユーザーも幸せになれるはずです。そのために、ぜひ運用スクリプトも一撃化していただければと願ってやみません。今までおつきあいいただきまして、有難うございました。