WordPressのスラッグと実在するディレクトリが重複したときの回避法
前田 大地
セブンシックスのダイチです。
今回は、WordPressのスラッグと実在するディレクトリが重複したときの回避法です。
wordpressのページが表示できない!
リニューアル案件などで、新たにwordpressを導入するとき、過去の静的ページを残さなければならないケースがあります。例えば、リニューアルするページには含まないけど、ページは消さずに残しておきたいスペシャルコンテンツ、、みたいな。
そのとき、残すページのディレクトリが、新しくWordPressで作るページのスラッグと重複してしまうと、WordPressのページが表示できなくなります。
例を出しますね。
例えば、こんな状況
残しておきたいページ:
https://www.xxx.co.jp/corporate/special.html
WordPress側で作成した会社概要ページ:
https://www.xxx.co.jp/corporate/
(固定ページのスラッグが「corporate」)
この状態で、WordPress側の会社概要ページを見ようとすると、エラーになります。
WordPressのURLは、スラッグなどのパラメータ値をURLの形に置き換えているものなので、「corporate」というディレクトリは実際には作られません。
でも、今回の例ではspecial.htmlが置かれている「corporate」というディレクトリが実在していて、名前もスラッグと重複しています。WordPress側の会社概要ページにアクセスしたつもりが、実在するcorporateディレクトリのほうを見にいってしまうことで、WordPressの会社概要ページが表示できなくなっているんですね。
WordPressサイトは、index.phpを起点としています。実在するディレクトリのほうにindex.phpがなければ、それはWordPress管理外ということです。
回避策
wordpressの「index.php」を実在するディレクトリに配置することで、この問題を回避することができます。
1.index.phpを配置
WordPressディレクトリにあるindex.phpをコピーして、実在するディレクトリに配置します。
https://www.xxx.co.jp/corporate/index.php
2.パスを書き換え
index.phpを編集して、wp-blog-header.phpまでのパスを通します。
require( dirname( __FILE__ ) . ‘/../wp-blog-header.php’ );
3.アクセスしてみる
すると、エラーだったページがWordPress管理下に入るため正常に表示されるようになります。
https://www.xxx.co.jp/corporate/
まとめ
そうならないように進められるのが一番ですが、世の中にはそうもいかない状況ってのがあるんですよ、はは。