[VCCW] VCCW 環境で WP-CLI をつかう

VCCW は WP-CLI ready なので、そのまま利用できます。

インストール

インストールは、下記を参考ください。

試しにサンプルコマンドを実行してみます。

% vagrant ssh
[vagrant@wordpress ~]$ pwd
/home/vagrant
[vagrant@wordpress ~]$ cd /var/www/
[vagrant@wordpress www]$ wp term create category Apple --description="A type of fruit"
Error: This does not seem to be a WordPress install.
Pass --path=`path/to/wordpress` or run `wp core download`.

/wordpress ディレクトリで wp コマンドを実行する必要があるんですね。
ということで、ログインから利用前の段階まではこんな感じですね。

% vagrant ssh
$ cd /var/www/html

参考資料

こちらを確認しながら必要なコマンドを実行してみます。

どうもオプションで渡す引数は WP_Query で扱うもののようです。

こちらが参考になりました。

プラグインの有効化

VCCW の Vagrantfile でプラグイン foo をインストール。
下記で有効化。

$ wp plugin activate foo

テーマの有効化

foo というテーマに切り替える。

$ wp theme activate foo

パーマリンクを設定する

$ wp rewrite structure '/%category%/%post_id%.html' --category-base='.'

ユーザーのプロフィールを更新する

「ビジュアルリッチエディターを使用しない」にチェックを入れたかったんですが、ぱっとみてどこか分からないのでとりあえず保留。
コメント欄で教えて頂きました。ありがとうございます。

例えば admin アカウントを変更したい場合。

$ wp user meta update admin rich_editing false

設定画面に対応する他項目も、下記で確認できました。

$ wp user meta list 1

カテゴリーを登録する

こんな形で slug を指定。日本語もいけるんですね。

$ wp term create category 'テスト' --slug=test

更新はこんな形。

$ wp term update category 4 --name=Sample --slug=sample

投稿を登録する

投稿と固定ページは、同じ wp post create コマンド。

オプションで渡せる args が分からないので、こちらを見てみました。

公開、カテゴリ、タイトル、コンテンツを指定し、投稿を作成します。

$ wp post create --post_status=publish --post_category=2 --post_title='sample post' --post_content='Lorem ipsum dolor sit amet.'

ファイルも渡せます。

$ wp post create ./sample.txt --post_status=publish --post_category=2 --post_title='sample post from .txt'

固定ページを登録する

上記に --post_type=page を追加すると、固定ページの登録になります。

$ wp post create ./sample.txt --post_type=page --post_status=publish --post_title='sample page from .txt'

スラッグ

ただ page slug の指定方法が見当たらなくて困りました。
最初に上記の --post_title= で slug を指定し作成、さらに update すれば良いけれども、最新の post_id が必要。

$ wp post update 8 --post_title='日本語のタイトル'

まっさらな状態からであれば、id=1 がサンプルの投稿、id=2 がサンプルのページなので、id=3 から決めうちすれば良いですが。
id のリストはこの辺で手に入りそうです。

シェルスクリプトで実行すると想定して、こんな関数を用意すればいけそうかな。

function latest_id() {
  ARRAY=(`wp post list --post_type=page,post --format=ids`)
  echo $ARRAY
}
wp post create ./sample.txt --post_type=page --post_status=publish --post_title='sample' --post_parent=21
ID=`latest_id`
wp post update $ID --post_title='サンプル'
wp post meta set $ID _wp_page_template sample.php

要研究。

親ページ

親ページの設定は --post_parent=2 オプションで指定可能でした。

テンプレート

テンプレートの設定は、meta コマンドでした。

$ wp post meta set 11 _wp_page_template menu.php

投稿にアイキャッチ画像を登録する

$ wp media import ./thumbnails/01.jpg --post_id=1 --featured_image

DBを操作する

この辺は試してないですが、インポート・エクスポートなど。

DB内のテキストの検索・置換。