WordPress setup

`wp-cli.phar` を使って開発環境を構築する。

## Install

```bash
# wp-cli
wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

# Wordpressの準備
php ./wp-cli.phar core download --locale=ja # --version=4.0
php ./wp-cli.phar config create --dbhost=127.0.0.1 --dbname=sample2019db --dbuser=sample2019user --dbpass=sample2019pass --dbcharset=utf8mb4
php ./wp-cli.phar core install --url=http://127.0.0.1:8080 --title="sample 2019" --admin_name="admin" --admin_email="admin@example.com" --admin_password="passw0rd"

# プラグインのインストール&有効化
## https://blog-tip.com/wordpress/plugin/recommend/
php ./wp-cli.phar plugin activate akismet
php ./wp-cli.phar plugin delete hello
php ./wp-cli.phar plugin install cmb2 --activate
```

## Theme & Post

```bash
# テーマの作成
# https://developer.wordpress.org/cli/commands/scaffold/_s/
php ./wp-cli.phar scaffold _s sample2019 --theme_name="sample 2019" --author="sample" --sassify --activate

# 既存テーマの削除
php ./wp-cli.phar theme delete twentynineteen
php ./wp-cli.phar theme delete twentyseventeen
php ./wp-cli.phar theme delete twentysixteen

# カスタム投稿の作成
# https://developer.wordpress.org/cli/commands/scaffold/post-type/
php ./wp-cli.phar scaffold post-type blog --label="ブログ" --theme="sample2019"
vi functions.php # require get_template_directory() . '/post-types/blog.php';

# タクソノミー（タグ）の作成
php ./wp-cli.phar scaffold taxonomy blog_tag --label="ブログのタグ" --post_types="blog" --theme="sample2019"
vi functions.php # require get_template_directory() . '/taxonomies/blog_tag.php';

# タクソノミー（カテゴリ）の作成
# 手動で「'hierarchical' => true」に設定
php ./wp-cli.phar scaffold taxonomy blog_category --label="ブログのカテゴリー" --post_types="blog" --theme="sample2019"
vi functions.php # require get_template_directory() . '/taxonomies/blog_category.php';

# 既存の固定ページの削除
php ./wp-cli.phar post delete $(php ./wp-cli.phar post list --post_type=page --field=ID --name="sample-page")
php ./wp-cli.phar post delete $(php ./wp-cli.phar post list --post_type=page --field=ID --name="privacy-policy" --post_status=draft)

# 固定ページ
php ./wp-cli.phar post create --post_type=page --post_status=publish --post_title="Company" --post_name="company"
php ./wp-cli.phar post create --post_type=page --post_status=publish --post_title="Message" --post_name="message" --post_parent=$(php ./wp-cli.phar  post list --post_type=page --field=ID --name="company")
```

---

## Other

```bash
# 簡易Webサーバー（http://0.0.0.0:8080/wp-admin/）
php ./wp-cli.phar server --host=0.0.0.0 --port=8080

# 本体ばバージョン確認、アップデートの確認、アップデート
php ./wp-cli.phar core version
php ./wp-cli.phar core check-update
php ./wp-cli.phar core update

# プラグインの状態確認
php ./wp-cli.phar plugin status

# プラグインの検索
php ./wp-cli.phar plugin search "wordpress faq manager"

# プラグインのステータス確認 - 更新
php ./wp-cli.phar plugin status theme-my-login
php ./wp-cli.phar plugin update theme-my-login

# リライトリスト
php ./wp-cli.phar rewrite list --format=csv

# 画像サムネイルの再生成
php ./wp-cli.phar media regenerate --yes

# 画像のインポート
php ./wp-cli.phar media import /tmp/**\/*.jpg

# サンプルの投稿作成
php ./wp-cli.phar post generate --count=100 --post_type=blog
```

## Links

* [Command line interface for WordPress](https://wp-cli.org/ja/)
* [WP-CLIで知っておいて欲しい便利な機能](https://qiita.com/yousan/items/65349d1b20b3db28a554)
* [wp-cliでいろいろ試す](https://qiita.com/GotoKazu/items/046946f718255a569acc)
* [[WordPress] 負荷がかかっている処理を見つけるのに wp profile がとても便利だった](https://qiita.com/wokamoto/items/3902278e658ba856f1a9)