[wp-cli]シェル芸でWordPress投稿記事を編集する


昨日作成したWordPress一撃インストールのサーバーですが、シェル芸人たるものコマンドラインで投稿記事などを弄ってみたいものです。今回は、WordPressがインストールされたときに自動生成される最初の投稿をwp-cliで編集してみましょう。

一撃インストールしたwp-cli(以下wpコマンド)は、あらかじめPATHが通ったディレクトリに置かれています。whichコマンドで確認してみましょう。

# which wp
/usr/local/bin/wp

しかし、rootユーザーでwpコマンドを実行しようとすると、以下のようなエラーが表示されます。

# 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 ...

スタートアップスクリプトの中では、ドキュメントルートのオーナーがnginxだったこともあって、nginxユーザーになってwpコマンドを実行していましたが、毎回毎回nginxユーザーにsuするのは面倒なので、上記メッセージの通り、「--allow-root」フラグを立てて実行することにします。

■ 投稿一覧を確認する

wp post ilst で投稿記事一覧を確認できます。

# wp --allow-root post list --path=/home/vhosts/$(uname -n)/public_html
+----+--------------+-------------+---------------------+-------------+
| ID | post_title   | post_name   | post_date           | post_status |
+----+--------------+-------------+---------------------+-------------+
| 1  | Hello world! | hello-world | 2015-01-03 21:08:12 | publish     |
+----+--------------+-------------+---------------------+-------------+

ご覧のように、自動生成された投稿記事が1つ公開されているだけです。投稿のタイトルが「Hello world!」だけでは寂しいので、タイトルをかわいくしてみましょう。

■ 投稿記事ID1のタイトルを変更する

wp post update で任意のフィールドを更新することができます。ここではpost_titleを (っ´∀`)っ ゃー にしてみましょう。

# wp --allow-root post update 1 --post_title="(っ´∀`)っ ゃー" --path=/home/vhosts/$(uname -n)/public_html
Success: Updated post 1.
# wp --allow-root post list --path=/home/vhosts/$(uname -n)/public_html
+----+------------+-------------+---------------------+-------------+
| ID | post_title | post_name   | post_date           | post_status |
+----+------------+-------------+---------------------+-------------+
| 1  | (っ´∀`)っ ゃー | hello-world | 2015-01-03 21:08:12 | publish     |
+----+------------+-------------+---------------------+-------------+

wp post updateの構文のあとに、ID1番(行)を指定し、--<フィールド名>="内容" (列)を指定しています。

■ 投稿記事ID1の中身をすべて取得する

こんな感じで投稿記事本文も含めすべての中身を取得することができます。(クリックで大きくなります)

# wp --allow-root post get 1 --path=/home/vhosts/$(uname -n)/public_html
+-----------------------+----------------------------------------------------+
| Field                 | Value                                              |
+-----------------------+----------------------------------------------------+
| ID                    | 1                                                  |
| post_author           | 1                                                  |
| post_date             | 2015-01-03 21:08:12                                |
| post_date_gmt         | 2015-01-03 21:08:12                                |
| post_content          | WordPress へようこそ。これは最初の投稿です。編集もしくは削除してブログを始めてください ! |
| post_title            | (っ´∀`)っ ゃー                                    |
| post_excerpt          |                                                    |
| post_status           | publish                                            |
| comment_status        | open                                               |
| ping_status           | open                                               |
| post_password         |                                                    |
| post_name             | hello-world                                        |
| to_ping               |                                                    |
| pinged                |                                                    |
| post_modified         | 2015-01-03 21:13:54                                |
| post_modified_gmt     | 2015-01-03 21:13:54                                |
| post_content_filtered |                                                    |
| post_parent           | 0                                                  |
| guid                  | http://**********/?p=1                             |
| menu_order            | 0                                                  |
| post_type             | post                                               |
| post_mime_type        |                                                    |
| comment_count         | 1                                                  |
+-----------------------+----------------------------------------------------+

post_contentのフィールドが、本文の中身です。

■ 投稿記事ID1の本文を般若心経にする

post_content(投稿記事本文)が「WordPress へようこそ。これは最初の投稿です。編集もしくは削除してブログを始めてください ! 」では少々寂しいものがあります。ここは世の諸行無常を感じるべく、般若心経にしてしまいましょう。

# wp --allow-root post update 1 --post_content="
> 摩訶般若波羅蜜多心経
> 観自在菩薩行深般若波羅蜜多時照見五
> 蘊皆空度一切苦厄舎利子色不異空空不
> 異色色即是空空即是色受想行識亦復如
> 是舎利子是諸法空相不生不滅不垢不浄
> 不増不減是故空中無色無受想行識無眼
> 耳鼻舌身意無色声香味触法無眼界乃至
> 無意識界無無明亦無無明尽乃至無老死
> 亦無老死尽無苦集滅道無智亦無得以無
> 所得故菩提薩埵依般若波羅蜜多故心無
> 罣礙無罣礙故無有恐怖遠離一切顛倒夢
> 想究竟涅槃三世諸仏依般若波羅蜜多故
> 得阿耨多羅三藐三菩提故知般若波羅蜜
> 多是大神咒是大明咒是無上咒是無等等
> 咒能除一切苦真実不虚故説般若波羅蜜
> 多咒即説咒曰
> 掲諦 掲諦 波羅掲諦 波羅僧掲諦
> 菩提薩婆訶 般若心経
> 
> " --path=/home/vhosts/$(uname -n)/public_html
Success: Updated post 1.

それではブラウザから確認してみましょう。

NULLPOPOPO_WP_2014010400

ね、簡単でしょう?WordPressでもシェル芸ですよ!これからは。