WordPressで作成した固定ページの配下に静的HTMLを共存させる方法をご紹介いたします。
例えば、koteiというスラッグの固定ページを作成していて、/kotei/seiteki/はWordPressではなく静的HTMLを設置したいという場合の対処法です。
WordPressの固定ページ配下に静的HTMLを共存させる方法
まずはWordPressインストールディレクトリに、静的HTMLを設置するディレクトリを作成します。今回の例では、以下のように設置しました。
wp/
├ kotei/
│ └ seiteki/
│ └ index.html
通常は、固定ページのスラッグと同名のディレクトリ(今回の場合は/kotei/)を設置すると、設置したディレクトリ側が優先されるため、固定ページは表示されずディレクトリ内のファイル一覧が表示されてしまいます。
これを回避するには、WordPressインストールディレクトリ直下にあるindex.phpを以下のように書き換えて、koteiディレクトリにコピーします。
require __DIR__ . '/../wp-blog-header.php';
以下のようにkoteiディレクトリの直下にindex.phpを設置します。
wp/
├ kotei/
│ └ index.php
│ └ seiteki/
│ └ index.html
すると、/kotei/にアクセスした時は固定ページが、/kotei/seiteki/にアクセスした時には静的HTMLが表示されるようになります。
リダイレクトループが発生した場合
上述の対応をした後、静的HTMLにアクセスした際にリダイレクトループが発生するケースがあるようです。その際は、適用しているテーマのfunctions.phpに以下を追記することで解消します。
remove_filter('template_redirect', 'redirect_canonical');
あとがき
稀に固定ページ配下に静的HTMLを共存させたいという要望をいただくことがあります。
WordPressの固定ページで作成するか、WordPressでは使われていないディレクトリ名で設置するか、いずれかで対応した方が良いとは思いますが、どうしてもという時は上述した対処法をお試しください。
> 以下のようにkoteiディレクトリの直下にindex.phpを設置します。
> wp/
> ├ kotei/
> │ └ seiteki/
> │ └ index.html
> │
> └ index.php
ここが少し分からないのですが、koteiの直下に置くならこのようになるということでしょうか?
wp/
├ kotei/
│ └ index.php
│ └ seiteki/
│ └ index.html
│
└ index.php
ご指摘ありがとうございます。おっしゃる通りです。
書く場所を間違えていましたので、投稿も修正いたしました。