WordPress で index.html を共存させる方法

Twitter で交流のある新潟系エンジニア @yutacar さんに、「index.htmlを置きながらWPのデザインとか確認出来るでしょうか?apacheの設定?でindex.php自身が上手く表示出来ないみたいなのです。」と聞かれて、それに答えたのでせっかくだから設定方法をシェア。
既存のサイトをそのままにしておいて、裏で WordPress に移行したいとかって時に使える Tips だと思われます。

サイトを http://example.com/ として話を進めます。

WordPress ではインストールしたフォルダの .htaccess で index.php が優先されていないと正常に動作しません。

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

ただ、この状態だと http://example.com/index.html と明示的にアクセスしない限り index.html の内容が表示されません。
http://example.com/ でアクセスされた場合も http://example.com/index.html と同じ表示をするには、どうすれば良いのでしょうか?

この問題に対処するには、任意のページをトップの固定ページとして表示する機能を利用します。
以下のように対応すれば、トップページとして index.html の内容を表示することができます。

index.html の内容を表示するページの作成

まず、以下の内容で「template_toppage.php」というファイルを作って、利用中のテーマフォルダにコピーしてください。
これで、ページ作成時に「Top Page」というテンプレートを選択できるようになります。

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

スクリーンショット「固定ページの作成」次に新規ページを作成します。
タイトルは何でもいいです、適当に「Top Page」とか付けてください。
本文は空でいいです。
「属性」の「テンプレート」から「Top Page」を選択してください。
この状態でページを作成します。

トップページを任意のページに変更する

スクリーンショット「トップページを変更する」任意のページをトップページに設定します。
管理用ダッシュボードの「設定」-「表示設定」で、「フロントページの表示」として「固定ページ」を選び、「フロントページ」として先ほど作成したページを選択してください。

これで完成。
http://example.com/ にアクセスすると index.html の内容が表示されているはずです。

なお、WordPress をインストールしたフォルダ直下の index.html を読み込んで内容を吐き出しているので、このファイルが無いとエラーが発生しますので、それだけ注意してください。

WordPress で index.html を共存させる方法」への6件のフィードバック

  1. mura

    有益な情報ありがとうございます。
    現在通常のサイトとWordpressの統合で、うまくWordpressが移行できるまでサイトは今まで通り表示できないかと思案していたところでした。

    上のやり方で進めましたが、「トップページを任意のページに変更する」の手順をしなくてもindex.htmlが表示されました。ちょっと慌てました。
    また、index.htmlが存在しなくてもエラーにならず、Wordpressのトップ画面が出ました。
    versionは4.3.1です。 この記事を書かれた時とは少し変わってるのかもしれないですね。

    返信
  2. raran

    コメント欄への質問、失礼いたします。
    この方法を行った上で、マルチサイト機能を利用できますでしょうか?
    お教えいただければと存じます。
    よろしくお願いいたします。
    raran

    返信
    1. をかもと 投稿作成者

      マルチサイトでは試してません。
      試してみてください。うまく行ったらブログなりで公開していただければ幸いです。

      返信
  3. ピンバック: WordPressでFLASHムービー | home and abroad

  4. おさるのおやこ

    イヤー、本当に助かりました。
    ご紹介の方法で、丸一日格闘した、インデックスファイルに作ったフラッシュムービーファイルとの連携表示が出来ました。
    自分の場合は、template_toppage.phpの他に、template_index2.phpも作って、前者で最初のフラッシュムービーの表示をさせ(index2.htmlへリダイレクト。)、後者で実質的なトップページ(テンプレートファイルのindex.phpの中身をそのままコピペ(ただし先頭のみ、/* Template Name: index2 */と入れておいて。)としました。
    感謝です!!

    返信
  5. ピンバック: Wordpress Muの表示、改善したかも(Maybe?) « whiterecord

コメントを残す

メールアドレスが公開されることはありません。