win10, XAMPPでWordpressを大量に動かしている人向けのリセット方法

ローカルにてWordpressのテスト環境を構築しているのですが作業が終わった後、通常であれば

- ファイルの削除
- データベースの削除
- 次に使う時のためのファイル準備（wp-config生成前）

上記の作業を大体1分くらいで1連の動作ができてると思っていますが
めんどくさがりな人(特に自分)向けに最低限の手間でリセットする方法を作ります。
理想はクリックのみで完了を目指してます

##動画追加しました
次の書くかもしれない記事と合わせるとこうなります。
人間がやっている操作は

- バッチファイルの起動
- ブラウザのリロード
- 「インストールをしますか」の「OK」ボタン

のみで後は勝手にやってくれています。

![testimg.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598642/e74eb6c9-de72-06a5-9746-dd90f3addcdd.gif)


まずは前提の環境
win10
xampp
Wordpress5.3
php7.3
[7zip](https://sevenzip.osdn.jp/)が入っている
C:\xampp\htdocs\wp01このようにインストールされている
※こんなアドレスlocalhost/wp01/wp-admin/setup-config.php
データベース名＝wp01のようにディレクトリと同じ名前

##まずはインストール画面の入力を自動化
###データベース設定
####データベース名
※空きが無かったので12で行きます。
localhost/wp12/にアクセスするとこんな風に入力されていれば理想です。
![FireShot  #279  - http.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598642/aaf64ed3-f508-07be-a690-c6991fed0a15.png)

そんなわけで最初にDBの入力画面を自動入力していきます。
wp-admin/setup-config.phpを開き「id="dbname"」で検索。

```setup-config.php
<tr>
<th scope="row"><label for="dbname"><?php _e( 'Database Name' ); ?></label></th>
<td><input name="dbname" id="dbname" type="text" aria-describedby="dbname-desc" size="25" value="wordpress"<?php echo $autofocus; ?>/></td>
<td id="dbname-desc"><?php _e( 'The name of the database you want to use with WordPress.' ); ?></td>
</tr>
```
そうすると上記が引っかかると思います。
そしたら[input]内の[wordpress]が初期の入力値ですので[wp12]と入れたいのですが
入れてしまうと仮に[wp13]となってもDB[wp12]となってしまいますのでダメですね・・・
少し考えて・・・「あっURLから変数取ろう」と思い付いたので

```setup-config.php
<?php /*要約すると変数[$db_name]の中身はURLを'/'区切りで配列にしてね*/ ?>
<?php $db_name = explode('/',$_SERVER['SCRIPT_NAME']); ?>
```
これをフォームの上に入れます。

そうすると変数にURLが入るので先ほどの[input value]にを追加すると

```setup-config.php
<?php echo $db_name[1]; ?>
```
![FireShot  #280  - http.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598642/b3b99072-aaf2-e1ad-db20-a0af29779b58.png)
こんな感じに勝手に入力されます。

####ユーザー名
XAMPPの初期は
ID: root / PW: なし
なのでこれで書きますが各自変更してください。
データベース名を書き換えた部分のすぐ下に[input id="uname"がありますので[value]を自身のDBユーザー名に変更します。

```setup-config.php
<td><input name="uname" id="uname" type="text" aria-describedby="uname-desc" size="25" value="root" /></td>
```

ここはテスト環境ごとに変えていなければ直入力でOKです。
※真面目に変更するならmoファイルを変更しないといけないのでスルーします(笑)

####パスワード

これはパスワードなしの場合は[value]を空にするだけでOKです。

```setup-config.php
<td><input name="pwd" id="pwd" type="text" aria-describedby="pwd-desc" size="25" value="<?php echo htmlspecialchars( _x( 'password', 'example password' ), ENT_QUOTES ); ?>" autocomplete="off" /></td>
```

```setup-config.php
<td><input name="pwd" id="pwd" type="text" aria-describedby="pwd-desc" size="25" value="" autocomplete="off" /></td>
```
![FireShot  #282  - http.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598642/d87648e0-f479-1006-8b70-088ac9e50409.png)
これで空になったはずです。

####データベースのホスト名、テーブル接頭辞
この2つはローカルであれば初期値で使っていると思うのでスルーしま～す。

###サイトの設定？

まずは理想の確認
![FireShot  #285  - http.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598642/b6c80920-1908-a2f5-be81-ea662017d314.png)
こんな風に入力されていればそのままインストールできますね。
####サイトのタイトル
install.phpで[id="weblog_title"]を検索

```wp-admin/install.php
<td><input name="weblog_title" type="text" id="weblog_title" size="25" value="ローカルテストサイト<?php echo esc_attr( $weblog_title ); ?>" /></td>
```
見つかったら[value]を好きなものを追加、今回は[ローカルテストサイト]にしました。
![FireShot  #286  - http.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598642/390e4ea2-39ac-a27a-7e97-ddf520eff9dc.png)

####ユーザー名
同じく[install.php]で[id="user_login"]を検索
※すぐ下にありますが・・・

```wp-admin/install.php
<input name="user_name" type="text" id="user_login" size="25" value="aaa<?php echo esc_attr( sanitize_user( $user_name, true ) ); ?>" />
```
同じく[value]に値を追加今回は[aaa]
![FireShot  #287  - http.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598642/0aa83d0e-c221-d1e6-1042-5c1206e59005.png)

####パスワード
またまた同じく[id="pass1"]を検...
んで同じく[value]と書きたいのですがちょっと違って[data-pw]に値を入れます。

```wp-admin/install.php
<input type="password" name="admin_password" id="pass1" class="regular-text" autocomplete="off" data-reveal="1" data-pw="aaa" aria-describedby="pass-strength-result" />
```
短いパスワードだと警告が出るので[name="pw_weak"]を検索して[checked]を追加します

```wp-admin/install.php
<input type="checkbox" name="pw_weak" class="pw-checkbox" checked/>
```
![FireShot  #288  - http.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598642/cbf60bdd-e0b2-7609-6abf-de6b84448545.png)

####メールアドレス
[id="admin_email"]を検索して[value]にメールアドレスを追加します。

``````wp-admin/install.php
<input name="admin_email" type="email" id="admin_email" size="25" value="info@free-koba.com<?php echo esc_attr( $admin_email ); ?>" />
```
![FireShot  #289  - http.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598642/7f50e498-6c64-b698-9711-fcf30b1aa8d7.png)

####これでインストールできるはず
テストとして「さぁ、始めましょう」のページからインストールしてみましょう。
※この段階で全ファイルを全てコピーしておいた方がいいです。

ここまでうまくできでいればひたすら末尾のボタンを押すだけでインストールができるようになったかと思います。

##ファイル、フォルダーの削除処理の自動化
**さて、まず書いておかないといけないのがば
ここからはバッチファイルを使うので色々危険なので細心の注意をはらって作業してください。**
###バッチファイル
まず、ルートにバッチファイルを作成します。
拡張子は[bat]でOKです。
中身はとりあえず[pause]としましょう。

```C:\xampp\htdocs\wp12\test.bat
pause
```
そしたら起動してみましょう。

```cmd.
C:\xampp\htdocs\wp12>pause
続行するには何かキーを押してください . . .
```
このように表示され何かキーを押すと終了すれば正常です。

####フォルダの削除
次はお待ちかねのフォルダ削除です。

```C:\xampp\htdocs\wp12\test.bat
pause
rd /s /q wp-admin
rd /s /q wp-content
rd /s /q wp-includes
```
要約すると

- キーを押すまで待機
- 兄弟のフォルダのwp-adminをサブディレクトリを含め確認なしで削除
- 兄弟のフォルダのwp-contentをサブディレクトリを含め確認なしで削除
- 兄弟のフォルダのwp-includesをサブディレクトリを含め確認なしで削除

このような内容となります。
ゴミ箱にも入らずに削除されますのでご注意ください。
※最初の行のpauseを取ると起動した瞬間に削除処理が始まりますのでご注意を・・・

####ファイルの削除
つぎはファイルの削除です。
フォルダ削除と命令が違います。

```C:\xampp\htdocs\wp12\test.bat
pause
rd /s /q wp-admin
rd /s /q wp-content
rd /s /q wp-includes
del  *.php
del  *.html
del  *.config
del  *.txt
del  *.htaccess
```
要約すると

- キーを押すまで待機
- 兄弟のフォルダのwp-adminをサブディレクトリを含め確認なしで削除
- 兄弟のフォルダのwp-contentをサブディレクトリを含め確認なしで削除
- 兄弟のフォルダのwp-includesをサブディレクトリを含め確認なしで削除
- 兄弟ファイルの拡張子が[php]のファイルを全部削除
- 兄弟ファイルの拡張子が[html]のファイルを全部削除
- 兄弟ファイルの拡張子が[txt]のファイルを全部削除
- 兄弟ファイルの拡張子が[htaccess]のファイルを全部削除

####テストしてみよう
フォルダを適当に作りその中にWordpressのファイルを展開してください。
wp-adminとtest.batが兄弟になるように配置して実行すると・・・

あら不思議test.batを除き消えてしまいました(笑)
※もし要らないファイルが残っていれば拡張子を追加してください。

##ファイル、フォルダーの生成の自動化
さっき作ったフォルダの中はtest.batしか残っていないと思います。
もし次に使う時にいちいちファイルを展開するのは面倒なので自動で展開するようにしましょう。
###ファイル生成、解凍の自動化
まずは最初から編集しているWordpressのファイルをzipに圧縮しましょう。
例: 53wp.zip
このzipとtest.batは兄弟ファイルとして配置します。
配置できたらtest.batに追加します。

```C:\xampp\htdocs\wp12\test.bat
del  *.htaccess
rem この後に追加
"C:\Program Files\7-Zip\7z.exe" x ./53wp.zip"C:\Program Files\7-Zip\7z.exe" x ./53wp.zip
```
※ rem はコマンドプロンプトのコメントとして扱われます。
これで[test.bat]を実行すれば自動で展開されます。

##DB削除、作成の自動化
あとはDBの削除ですね。
間違っても必要なデータを消さないように(笑)
###ディレクトリ名を変数化

```C:\xampp\htdocs\wp12\test.bat
"C:\Program Files\7-Zip\7z.exe" x ./53wp.zip"C:\Program Files\7-Zip\7z.exe" x ./53wp.zip
rem この後に追加
@echo off
for /f "tokens=1-7 delims=\" %%a in ('echo %~dp0') do (
  set drive=%%a
  set folder1=%%b
  set folder2=%%c
  set wp=%%d
)
```
これで変数[wp]にディレクトリ名[wp12]が入りました。
###バッチファイルでDB削除、生成
```C:\xampp\htdocs\wp12\test.bat
 set wp=%%d
)
rem この後に追加
cd C:\xampp\mysql\bin
mysql -u root %wp% -e "drop database %wp%"
mysql -u root -e "create database %wp% DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci"
```
要約すると
- この後に追加
- C:\xampp\mysql\binに移動して
- 変数[wp]の名前のDBを削除
- 変数[wp]の名前のDBを作成

##ひとまず完成です
ここまでうまくできていればtest.batを起動すれば
- ファイル、フォルダの削除
- ファイル、フォルダの生成
- DBの削除
- DBの生成

ここまで自動化できたはずです。

これで元の目的のクリックのみでリセットはできましたが・・・
**クリック回数が多い気がするから数えてみます**

- test.batをダブルクリック 2
- さぁ始めましょう　1
- 送信　1
- インストーラーを実行 1
- Wordpressをインストール 1
- ログイン 1

合計7回・・・

**うん、面倒！！**

追加でJqueryあたりでブラウザの自動操作作ろう。
~~※実はもう完成していたりしますｗ~~

もしこの記事が役に立ったのであればいいね！とかコメントをお願いします。