WordPress / WordPress のページと静的HTMLを混ぜる

WordPress / WordPress のページと静的HTMLを混ぜる

この例では一番制約のきついトップページを静的HTMLで実装する方法

通常は .htaccess でファイルが存在していればそのファイルへ、存在しない場合はリクエストはすべて index.php に行く

そこに index.html を設置した場合は普通に index.html が動く。 これは Apache の設定が index.php より index.html を優先しているためである

/blog/ とかは今まで通り wordpress のコンテンツがでる。 / は index.html が表示される。

しかしそれだけでなく、/ にパラメータがくっついたモノも結構ある。これの処理に困る index.php ではなく index.html に行ってしまうので正しく処理されない。

これを回避しつつ WordPress と融合させるために少しトリッキーな実装をする。

まず、index.html をロードするだけのテンプレートをテーマの中に作る。 load_index_html.php という名前で作っておく。 WordPress はこのテンプレートファイル名の規約によってテンプレートが強制選択されたりするのでできるだけ無いなという名前をつけておくとよい

<?php
/*
Template Name: LOAD_INDEX_HTML
*/
readfile(ABSPATH . '/index.html');
?>

そのあとに管理画面から固定ページを1つ作る。内容は全くなしでいい。 コンテンツとして表示しないので注意書きを書いておいてもいいかもしれない。

そして、ページ属性からテンプレートを指定して先程の LOAD_INDEX_HTML を使う

これで公開にする。

設定→表示設定から ホームページの表示→固定ページ、さっき作った固定ページを選択

そして、htaccess に対してこのように記述し / に対する html の優先度を php よりも低くする

DirectoryIndex index.php index.html index.htm .ht

これで index.html が WordPress のトップページとして振る舞うようになる。

注意として front-page.php というテンプレートがあると、トップページに関する設定項目には1bitも書いてないが、全ての設定を無視して front-page.php を使うという挙動になるので、このファイルがあるなら除去しておく必要がある。

wordpress/mix_wordpress_and_static_html_pages.txt · 最終更新: 2020-09-23 10:17 by ore