LoginSignup
2
2

More than 3 years have passed since last update.

WordPressを新規インストール状態に初期化するバッチ(個人用)

Last updated at Posted at 2020-11-18

 まったくもって個人用なのだが、最近WordPressのプラグイン開発をしていて、テストで新規インストール状態のWordPressに頻繁に戻す必要が生じた。毎度々、コンソールからDBドロップして、コアファイル消して、新規インストールして……みたいなことやってるのはあまりにも非効率なので、バッチ化してワンコマンドで実行できるようにした。
 今後の開発用にスニペットとして残しておく。

Windowsマシン用

 「XAMPP」環境下、「wp-cli」導入済み、かつ「Git for Windows」のoptional Unix toolsを有効にしてコマンドプロンプトでUnixコマンドが使えるようになっていることが前提。

init.bat
@rem 自分以外のファイルをすべて削除
ls -a | grep -v -E "^\.$^\.\.$|^init.bat" | xargs rm -rf
@rem DBから初期化するWordPress用のデータベースを削除する
mysql -u {DB_USER} -p{DB_PASSWORD} -P 3306 --default-character-set=utf8mb4 -e "DROP DATABASE IF EXISTS {DB_NAME}"
@rem WordPressの最新版をダウンロード
php %USERPROFILE%\wp-cli.phar core download --locale=ja --version=latest
@rem WordPressの設定ファイル wp-config.php を作成する
php %USERPROFILE%\wp-cli.phar config create --dbname={DB_NAME} --dbuser={DB_USER} --dbpass={DB_PASSWORD} --dbhost=localhost:3306 --dbprefix={DB_PREFIX} --dbcharset=utf8mb4
@rem DBを新規作成する
php %USERPROFILE%\wp-cli.phar db create
@rem WordPressをインストールする
php %USERPROFILE%\wp-cli.phar core install --url={WP_SITE_URL} --title="{WP_SITE_NAME}" --admin_user={WP_SUPER_ADMIN_USER} --admin_password={WP_SUPER_ADMIN_PASSWORD} --admin_email={WP_SUPER_ADMIN_EMAIL}
@rem 有効化されているテーマ以外のテーマを削除
php %USERPROFILE%\wp-cli.phar theme list --status=inactive --field=name | xargs -I {} rm -rf "./wp-content/themes/{}"
@rem 開発中のプラグインを取得してカレントディレクトリに展開する
tar --exclude "my-plugin/.git" --exclude "my-plugin/node_modules" --exclude "my-plugin/.eslintrc" --exclude "my-plugin/.gitignore" --exclude "my-plugin/babel.config.js" --exclude "my-plugin/package.json" --exclude "my-plugin/webpack.config.js" --exclude "my-plugin/*.log" --exclude "my-plugin/*.lock" -C C:\xampp\htdocs\{PATH_TO_DEVELOPMENT}\wp-content\plugins -zcf _temp.tgz my-plugin
mv C:\xampp\htdocs\{PATH_TO_DEVELOPMENT}\wp-content\plugins\_temp.tgz .
tar -zxf _temp.tgz
rm -rf ./_temp.tgz
@rem 開発中のプラグインをWordPressにインストールする
mv ./my-plugin ./wp-content/plugins/.

使う時は、コマンドプロンプトから初期化したいWordPressのドキュメントルートにinit.batを設置して、

> init

──するか、もしくはバッチファイルをダブルクリックで実行する。

 なお、バッチファイル中では doskey に登録したマクロは使えないので、マクロ化する前のフルパスコマンドを発行する必要がある。

Linuxマシン(Mac等)用

 こちらも、「wp-cli」導入済みが前提。

init.sh
#!/bin/bash

# `wp`コマンドでwp-cliを呼び出せない場合は、phpとwp-cliのパスを指定する
wpcli=`which wp-cli.phar`
wp="/usr/bin/php $wpcli"

# 自分以外のファイルをすべて削除
ls -a | grep -v -E "^\.$^\.\.$|^init.sh" | xargs rm -rf
# DBから初期化するWordPress用のデータベースを削除する
mysql -u {DB_USER} -p{DB_PASSWORD} -h localhost --default-character-set=utf8mb4 -e "DROP DATABASE IF EXISTS {DB_NAME}"
# WordPressの最新版をダウンロード
$wp core download --locale=ja --version=latest
# WordPressの設定ファイル wp-config.php を作成する
$wp config create --dbname={DB_NAME} --dbuser={DB_USER} --dbpass={DB_PASSWORD} --dbhost=127.0.0.1 --dbprefix={DB_PREFIX} --dbcharset=utf8mb4
# DBを新規作成する
$wp db create
# WordPressをインストールする
$wp core install --url={WP_SITE_URL} --title="{WP_SITE_NAME}" --admin_user={WP_SUPER_ADMIN_USER} --admin_password={WP_SUPER_ADMIN_PASSWORD} --admin_email={WP_SUPER_ADMIN_EMAIL}
# 有効化されているテーマ以外のテーマを削除
$wp theme list --status=inactive --field=name | xargs -I {} rm -rf "./wp-content/themes/{}"
# 開発中のプラグインを取得してカレントディレクトリに展開する
tar --exclude "my-plugin/.git" --exclude "my-plugin/node_modules" --exclude "my-plugin/.eslintrc" --exclude "my-plugin/.gitignore" --exclude "my-plugin/babel.config.js" --exclude "my-plugin/package.json" --exclude "my-plugin/webpack.config.js" --exclude "my-plugin/*.log" --exclude "my-plugin/*.lock" -C /Users/{PATH_TO_DEVELOPMENT}/wp-content/plugins -zcf _temp.tgz my-plugin
mv /Users/{PATH_TO_DEVELOPMENT}/wp-content/plugins/_temp.tgz .
tar -zxf _temp.tgz
rm -rf ./_temp.tgz
# 開発中のプラグインをWordPressにインストールする
mv ./my-plugin ./wp-content/plugins/.

 init.sh ファイルには実行権限(chmod a+x init.shをしておく)が必要。

 使い方は、ターミナル(コマンドライン)から初期化したいWordPressのインストールルートにinit.shを設置して、

> ./init.sh

──でOK。

 もし初期化前にDBバックアップがしたい場合は、データベースをドロップする前にmysqldumpコマンドを追加してバックアップすれば良い。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2