[WordPress]トップページも外部読み込みするには

今回お客さんの要望で、ニュース部分だけWordPressを使い、その他は静的ページでWordPressの関数を外部読み込みすることでサイトを構築してみたので、その備忘録です。

私自身はあまりそのような使い方をしたことはなかったのですが、そのようなことはできると聞いてはおりました。
どのような使い方を想定するか悩ましいところではありますが、例えばお客さんは自分で更新することはないので、固定ページに1ページずつ登録せずにデモで見せたページをそのまま使っちゃおう!あ、だけどニュース一覧のところはそのままってわけにはいかないな、とか。

あとは、WordPressで作っていることを一見わからないようにしたい、なんてときにもいいかなと思いました。

とはいえ、あらかじめそういう使い方をすると決めて制作していかないとヘッダやフッタなど共通部分では二度手間になってしまいそうなので、やはりサイトを作る前にしっかりそういう設計にするんだということは決めておいたほうがいいように思います。

やり方は簡単で、WordPressの関数を使いたいページの先頭に

とするだけ。

実はこれはindex.phpの中に書いてある

の、「wp-blog-header.php」に記載されているものと同じ

です。

いろいろ調べると、「wp-blog-header.php」をrequireしたほうがいいとか、いやwp-load.phpだとか、いろいろ書いてありましたが、関数を使用するだけなのであればwp-load.phpで十分なようです。

で、ちゃんと読み込まれれば、そのファイルの中でWordPressと同じ関数が動き、記事の一覧を取得したりということが可能になります。

 

 

トップページはどうするの?

今回悩んだのは、トップページを外部読み込みする場合はどうするのか、ということでした。
トップページ自体はindex.php(index.html)になるのでそもそもファイルが置けない。
なので、少し準備が必要です。

 

 

準備その1:管理ディレクトリをトップ直下ではなく、一階層下げる

例えば、WordPressを/wp/以下にインストールします。
その場合、「設定」-「一般設定」から、サイトアドレスをトップディレクトリに変更しておくことをお忘れなく。

ss

 

 

普通にWordPressでトップページなど固定ページを管理する場合は、先程出てきたindex.phpの中身を以下のように、インストールしたディレクトリに変更し、index.phpをトップページに移動します。

、今回はトップページも外部読込させる場合の話でして、その場合はindex.phpはそのままにします。(理由は後述)

 

 

準備2 .htaccessファイルをいじくる

なんでWordPressは該当するファイルがないのにページを表示するんだ?と考えた時、.htaccessの役割がわかっていれば手っ取り早いんですが、要はインストールしたディレクトリの一番上に.htaccessファイルを置いて、その下層にきたリクエストをindex.phpに渡して何を表示させるか・・・という動きになっていますので、トップページに別なファイルを置きたい、という場合は、index.phpを別な場所に置いて.htaccess内にそこへのパスを記載してあげればいいわけです。

それが、.htaccessファイルの

7行目にある、RewriteRule . /index.php [L]がそれですので、ここを、先程インストールした/wp/index.phpに飛ばして、そこで判断してね?
と記述してあげます。

これでOK。

どこかのページにリクエストがあったら、.htaccessファイルが読まれ、そこに書いてある/wp/index.phpが読まれて該当のURLのデータが表示される、という仕組みになります。

 

まとめ

ちょっと文字ばかりでわかりにくいかな、と思いますので、まとめてみます。

/.htaccess ・・・RewriteRule . /wp/index.php [L] と書き換える
/index.php ・・・外部読み込みしたいトップページ。先頭でwp-load.phpをロード
/wp/index.php ・・・もともとのWordpressのindex.phpファイル
/wp/〜 ・・・WordPressをインストールしてある

ルート直下に置くindex.phpは、この場合、

となりますのでお間違えなく!

You may also like...

2 Responses

  1. 谷村 洋一 より:

    [WordPress]トップページも外部読み込みするには を拝見しました。
    同じ様にチャレンジしてみたところ、うまく、WPトップページは外部のHTMLが参照されました(^_^)v

    ただ、WP標準のサーチ機能が機能しなくなりました。
     http://www.[ドメイン名]/?s=[検索キーワード]
    を入力すると、トップページが表示されてしまいます。(T_T)
    これは、解決できますでしょうか?

    もし宜しければ、アドバイスをいただけましたら嬉しいです。(^o^)
    宜しくお願い致します。

    • うみょ より:

      ご質問ありがとうございます。
      ちょっとすぐに確認できる環境がないので想像ですが、ただのPHPファイルがWordPressの関数を使えるだけの状態ですので、postされたデータに対して動的に処理をするようなことはできないと思います。
      検索結果を固定ページで作っているページに用意して、検索窓のpost先をそこに変えてあげる・・・など、いろいろ手段を考えてみましたが、この方法での検索結果の表示は難しいかもしれません。
      あとは、Googleのサイト内検索でしょうか。
      お力になれずに申し訳ありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です