WordPress5.2 to 4.7　権限なきダウングレード移行のベストプラクティスを追う

##業務命令
私的環境に構築した社用WordPressを、社の用意したAWSベースのWordPress環境に移行せよ。
###条件
- [ ] 移行元：WordPress 5.2.2 / Zenlogic
- [ ] 移行先：WordPress 4.7.13 / AWS
- [ ] FTPの権限なし
- [ ] MySQLの権限なし
- [ ] SSHの権限なし

##バージョンアップ
移行先のWordPressが古いのでまずはバージョンアップ。
………と言いたいところだったが、
- PHP5.6.20以降を必要とするため、更新を実行できません。現在稼働しているバージョンは5.3.29 です。
-  令和にこんなのってあるの〜！
そのため、バージョンアップを実施せずにダウングレードを伴う移行を決定。プラグインとか大丈夫なだろうか。

##まずは移行用プラグインを試す
###All-in-One WP Migration
ダウングレードという性質上、エラーになることが容易に予期できるが、試さずに諦めるのはよくないので、まずは使ってみる。
[比較記事](https://ebookbrain.net/plugins-for-safely-moving-wordpress/#duplicator)を参考に、[All-in-One WP Migration](https://ja.wordpress.org/plugins/all-in-one-wp-migration/)だけを試すことに。

- [ ] 新環境　バージョン 6.97
- [ ] 旧環境　バージョン 6.97

ほぅ………
しかし、出力された97MiBのバックアップファイルが、移行先のPHPのアップロード上限が2MiBのためインポート不可に。Google DriveやBOXを使う方法もあるが、いずれも$99のプラグインの購入が必要。
古いうえPHP_FILE_MAXSIZE が低い………！

###Duplicator
負けを覚悟しつつ[Duplicator](https://ja.wordpress.org/plugins/duplicator/)を使用する。
結局のところクラウドは有料プラグインという構図は変わらない。無料だと、
/wp-snapshots
に落とせるのみのようだ。
すると、受け側で
/wp-snapshotsのURLを渡して受け取れないと意味がないのだが、常識的に考えて、
/wp-snapshotsが"777"になってるはずがない。SSH権限もないのでchmodも無理。
⇒Duplicatorも無理！

###UpdraftPlus
転進に転進を重ね、[UpdraftPlus](https://ja.wordpress.org/plugins/updraftplus/)を使用。
⇒バックアップは無料であるが、移行は一律に$30/yearの課金が必要。方法は独自クラウド一択。ものの５分で玉砕した。

ほかに有力なプラグインはなさそう。ただし、今回はサイトの規模自体が小さく、入っているプラグインも数個にすぎないので、シス管にはPHPのアップグレード等々をお願いするとして、その間動かないのももったいない。
そこで、個別要素毎の移行に切り替えていく。

##プラグインの移行
多くの記事がプラグインありきで書かれているので、プラグインなしでの移行には成功したとしても、用を為さない可能性が高い。そこで、プラグインを最初に移行させる。


- [x] Print, PDF & Email by PrintFriendly
- [x] Regenerate Thumbnails
- [x] Search Regex
- [x] Throw Spams Away
- [x] TinyMCE Advanced
- [x] Ultimate Category Excluder 
- [x] WP Multibyte Patch
- [x] XMLSitemap & Google News
- [x] Password Protected
- [x] SimpleAppLinks(https://wordpress.org/plugins/simpleapplinks/)
- [x] Query Monitor ←シス管が入れてくれた。


………怖いぐらい下位互換性が高い。バージョン問題でインストールを拒絶されるものは１つもなかった。
しかし、
- [ ] TablePress

に関しては、インストールはできたものの
```Attention: The installed version of WordPress is too old for the TablePress plugin! TablePress requires an up-to-date version! ```
として利用を拒絶されるというトラブルが発生する。大規模に利用している場合やソート機能などを使いこなしている場合は、他のTableなプラグインに移行するのも画像化も難しく、致命的かも知れない。

####Throw Spams Awayは救世主
[Throw Spams Away](https://wordpress.org/plugins/throws-spam-away/)は、ちなみに救世主です。WPにデフォで入っていて初っぱなから課金を要求してくるAskimetはすぐにアンインストールしましょう。

###テーマ
テーマのインストールも不可欠。今回は、sangoテーマを使用している。
ひとまずアップロード。
http://hoge.hoge/wp-admin/update.php?action=upload-theme
--> upload sango-theme.1.7.6.zip
413 Request Entity Too Large

………2MiB問題に突きあたったようだ。
こうなると手動でこれ以上進めることは不可能なのでシス管に泣きつくしかない。

#####シス管に救援要請
●HELP!
AWS環境の
・PHPバージョン(現状ver 5.3.29)
・PHPの最大アップロードサイズ(現状2M)
が小さすぎるようです。PHPは少なくともversion 5.6以上に、アップロードサイズは150Mに設定していただけると嬉しいです。


#####こんにちはPHP7.2.18
ここでPHP7.2.18へのアップグレードとMAXSIZEの変更が完了する(150MiB)
この時点でＷＰのアップグレードが可能だが、既にプラグインを手動移行していることもあり、全体の個別手動移行を継続する決断。

####引き続きテーマを導入
sango-theme.1.7.6.zipのインストールは成功。
[Sangoテーマ](https://saruwakakun.design/)の適応能力の高さに脱帽。こいつ、１万円の価値はあるぞ………。
子テーマのインストールも忘れずに。
#####カスタマイズCSSの移行
移行元の子テーマのstyle.cssをコピペ。新環境(4.7)ではCSSコードがハイライト表示されないこと、行番号がないことに気付く。
#####テーマの諸設定
「カスタマイズ」からGUIで設定できるテーマの諸設定は、どこかでファイルとして残っていないのだろうか？
⇒プラグインで簡単に移行できるみたい。[Customizer Export/Import](https://wordpress.org/plugins/customizer-export-import/)
dat/jsonが出力される。テーマのバージョンが一緒である以上間違いは起こらないはずなので自信を持って移行。
⇒ものの見事に移行される。恐ろしい。これが無料でいいのだろうか。

###エントリー（記事）
これはWPのデフォルトで移行できる。
- [ ] すべてのコンテンツ　　
これにはすべての投稿、固定ページ、コメント、カスタムフィールド、カテゴリー、タグ、ナビゲーションメニュー、カスタム投稿が含まれます。
- [ ] 投稿
- [ ] 固定ページ
- [ ] TablePress Tables　←ver問題で無効だとインポートできない
- [ ] メディア

中に入っている画像も、HTTP経由で勝手に取り寄せてくれるようだ。

###ウィジェット
まずはプラグインを試そう。
[Widget Importer & Exporter](https://ja.wordpress.org/plugins/widget-importer-exporter/)

あっけなく完了。もっとも順番だけは異なってしまうので要調整。

###結論
手動移行に成功した。バージョンが大幅に落ちるという珍しいパターンだったが、ＷＰの世界は全体として下位互換性が高く、助かった。
TablePressはデザインの自由度が低いので、この際入れ変えようと思う（内容はcsvで移行か）。プラグインごとの個別設定は移行できていないが、/wp-content配下のファイルを探せばconfigがあるのではないか？今回はFTP権限がないので断念。
もっとも、探せばファイルマネージャーができる怖いプラグインが見つかる可能性もあるが。最初に試していた移行系のプラグインを使えば個別のプラグインの移行ができるか否かは、不知。