サーバーで WordPress のインストールディレクトリよりも上位のディレクトリから Git 管理しているような、例えば以下のようなとき。
┣ .git/
┃
┗ public_html/ (WordPress インストールディレクトリかつ公開ディレクトリ)
ローカル環境でも当然 Git の連携をしたいのだけど、Local だと WordPress のインストールディレクトリ名は「public」になってしまう。
この場合 .gitignore
にローカル環境用の記述を書き加えてもいいけど、管理が煩雑になる…( .gitignore
に書き忘れ、とか)。
自分だけならまぁ気にしないけど、クライアントワークとかだったらあまり余計なことはしたくない。
ということでひと工夫。
1.まずは Local で素の WordPress 環境を作る
いつもどおりぽちぽちしていくだけ。
┗ (プロジェクトのディレクトリ)
┃
┣ app/
┃ ┣ public/ (WordPress インストールディレクトリかつローカルの公開ディレクトリ)
┃ ┃ ┗ wp-config.php
┃ ┗ sql/
┃
┣ conf/
┗ logs/
普通にインストールするとこんなディレクトリ構造になるはず。
いったんこの状態でサイトが表示できることも確認しておこう。
2.公開環境のファイル群をごっそり移動する
┗ (プロジェクトのディレクトリ)
┃
┣ app/
┃ ┣ .git/
┃ ┃
┃ ┣ public_html/ (公開環境のWordPress がインストールされたディレクトリ)
┃ ┃
┃ ┣ public/ (WordPress インストールディレクトリかつローカルの公開ディレクトリ)
┃ ┃ ┗ wp-config.php
┃ ┗ sql/
┃
┣ conf/
┗ logs/
この状態でもまだ素の WordPress のサイトが見えているはず。
このとき移植してくる公開環境の中にデフォルトのテーマ(いまなら Twenty Twenty-one)をコピペしておくことをお忘れなく。
3.wp-config.php を移動する
┗ (プロジェクトのディレクトリ)
┃
┣ app/
┃ ┣ .git/
┃ ┃
┃ ┣ public_html/ (公開環境のWordPress がインストールされたディレクトリ)
┃ ┃ ┗ wp-config.php
┃ ┃
┃ ┣ public/ (WordPress インストールディレクトリかつローカルの公開ディレクトリ)
┃ ┗ sql/
┃
┣ conf/
┗ logs/
ここで WordPress を見ようとすると「Internal Server Error」かな?public
ディレクトリと接続できなくなる。
4.public ディレクトリを削除する
┗ (プロジェクトのディレクトリ)
┃
┣ app/
┃ ┣ .git/
┃ ┃
┃ ┣ public_html/ (公開環境のWordPress がインストールされたディレクトリ)
┃ ┃ ┗ wp-config.php
┃ ┗ sql/
┃
┣ conf/
┗ logs/
Local 立ち上げで利用した public
以下のディレクトリは不要なので削除。
5.【ここがキモ】シンボリックリンクを作る
$ ln -s /path/to/public_html /path/to/public
解説
ln
:リンクを作るコマンド-s
:作成するリンクをシンボリックリンクに指定- /path/to/public_html :リンクを作りたい元フォルダ(この場合
public_html
) - /path/to/public :シンボリックリンクを作るパス(この場合
public
というリンクを作る)
これをすることで /path/to/public
にアクセスしたら /path/to/public_html
の中身にアクセスすることになる。
6.確認
┗ (プロジェクトのディレクトリ)
┃
┣ app/
┃ ┣ .git/
┃ ┃
┃ ┣ public_html/ (公開環境のWordPress がインストールされたディレクトリ)
┃ ┃ ┗ wp-config.php
┃ ┃
┃ ┣ public/ ( `public_html`へのシンボリックリンク )
┃ ┗ sql/
┃
┣ conf/
┗ logs/
このようになったら再度ローカル環境の WordPress にアクセスしてみる。これでまた素の WordPress が表示できたらOK。
あとはいつものように(?)WP-CLI
を使って公開環境のデータベースをインポートして search-replace
すればちゃんと Git と連携した状態でローカルに環境が作れる。
Git 管理している場合、(シンボリックリンクだけど)新たに public
ディレクトリができるので .gitignore に追記するのをお忘れなく。