PHP
WordPress
comopser

WordPressのデプロイを楽にするために考える

WordPress案件を沢山抱え、よそが投げ出したWordPressも触っているがデプロイがつらい…
楽にするためにWordPressを使っているのでツラくては意味がないので考えてみる。

なぜツラいのか

・データがいろいろな場所に散っている
ファイルはwp-content/uploads/
ユーザー情報はwp_users
ユーザーメタ情報やオプションはwp_options
プラグインによってはテーブル作って保存していたり…

・本番とテストサイトを全く同じに(基本的には)できない
WorPressを導入したからにはエンジニア以外がある程度管理できる(というかできないと意味がない)
どんどん手を離れて知らない子が育っていくのは前提とすべき
パーマリンク設定等のWordPress自体の設定だけでなく、プラグイン設定も

・どこで何をバージョンコントロールすればいいのかわからない
wp-config.phpがあるディレクトリ?
wp-content/?
それともテーマorプラグインだけ?

デプロイするパターンから考える

初期導入時(ローカル開発→本番サーバーデプロイ)

これは簡単ローカルからDBのデータ抜いて本番に流してしまえばいい
ファイルはFTPなり、Push To Deployなりでよしなに
ちなみに記事中などのURL書き換えはreplaceしないで「Search and Replace for WordPress Databases Script」使わないとハマるからね…
https://www.infoscoop.org/blogjp/2014/08/14/use-search-and-replace-for-wordpress-when-moving/

改修(ローカル開発→テストサーバー→本番サーバー)

本番からDBを抜いてきてローカルに流す。
ローカル開発して、本番からデータ抜いてテストサーバーに流し手動で設定。
問題なら本番サーバーメンテにして、本番からデータを抜き、テストサーバーにもう一度手動で設定の後本番にすべて上書き
手動部分をできるだけ無くすようにしたい…

なので開発手法を考える

手動設定部分を可能な限り減らす(できればなくす)ことができればWordPressのメリットを受けつつ、面倒なことは起こらない
そこで手動作業つぶしを以下のどれかでなんとかする
・pluginではなく可能な限りcomposerを使う。なんならプラグインの必要な部分を抜き出して開発しているものに組み込んでしまう。
・設定をコードにエクスポートできるプラグインをを可能な限り使用する
・プラグインを設定がいらないように書き換える
・デプロイしたら設定を変更するようにDBを書き換えるようなコードを組む
これでだいぶ楽になった

ついでにバージョンコントロールする場所を考える

小規模なブログ程度の場合

これはもう本番稼働しているものを正として諦めて開発テーマorプラグインのディレクトリで良いだろう

たくさんのプラグインを使った大規模なサイトの場合

手動作業つぶしを考慮すると、pluginsディレクトリ、themeディレクトリそれぞれに一つずつリポジトリを作成するのがベストかも

いろいろ書きましたがもっと良い方法あったら教えてください…