WordPressで作ったサイトのトップページをindex.hmtlの静的ファイルにしたい時の覚え書き。
既存のサイトで、新着情報等、一部だけをWP化したい時の手順です。
たとえば、
・新着情報だけしか更新しないから、ここだけWordPress化したい。
・新着5件をトップページに表示したいけど、それ以外の部分は静的htmlのまま管理したい。
・従ってトップページはWordPressを介さずにFTPで直接編集したいから、テーマファイルのphpにせず、htmlファイルのままにしておきたい。
みたいに、WordPressの導入範囲を最小限にとどめたい時のケースになります。
サーバによって作業が変わる様子です。
今回はサクラのレンタルサーバを使った時のケースを書きました。
あと、今回はWordPressは公開ディレクトリ直下にそのまま置いてあるのではなく、
「wp」等、ディレクトリを作ってその中にインストールしている構成を前提としています。
こんな感じです。
index.hmtl
wp
|- wp-admin
|- wp-content
|- wp-includes
▼PHPファイルをwww直下にコピーする
まず自分の使ってるphpのバージョンを確認して、サーバからローカルにDL。
私の場合は5.2.17でした。
Transmit(ftpソフト)で下記の領域にアクセスして、
/usr/local/php/5.2.17/bin/php-cgi
php-cgiをダブルクリックするとインストールできる。
バイナリモードじゃないといけないのだそうですが、Transmitは特に何も設定しなくても大丈夫でした。
ローカルにDLできたら、ファイルを
php.cgi
にリネーム。サーバのwww直下にアップします。
パーミッションは705にしました。
最後に、www直下にある.htaccessに下記を記載します。
Action myphp-script /php.cgi AddHandler myphp-script .php .html
ここまでの作業は下記を参考にさせてもらいました!
http://d.hatena.ne.jp/tazkittyz/20120306/1331042086
▼WordPress側でのファイル修正
.htaccessを修正。
RewriteRule . /index.php [L]
となっているのを
RewriteRule . /WordPressをインストールしてるディレクトリ/index.php [L]
に変更。
WordPressのindex.phpをindex.htmlに拡張子を変更して、1行目に下記を記載する
<?php require_once './WordPressをインストールしてるディレクトリ/wp-load.php'; ?>
ここでの作業は下記を参考にさせてもらいました!
http://www.webopixel.net/wordpress/206.html
あとは、ファイル内にWordPressのテンプレートに書くようなPHPを書いたら実行されるようになる。
追記:
まがりんさん(@jim0912)アドバイスをいただいた部分を追加しました。
wp-blog-header.php だと、不要な部分まで実行されてしまうので、wp-load.php を require_once する方が良いですね。
wp-blog-header.php ですと、記事の抽出処理まで行われることになります。これを活かすかどうかによりますが、この場合は、?p=nnnn などのパラメーターを付けられたりすると意図しない動作になる可能性があります。
WordPress の機能のみ使いたい場合は、wp-load.php を読み込むと、WordPress関数およびプラグイン、テーマのfunctions.php などが使える初期化までで止まります。この場合は、htmlファイルで query_posts にて、記事の取得を自分で行う必要があります。by. 大曲仁さん
▼既存htmlファイルの修正
xmlの宣言が書かれていると、syntaxエラーになってしまうため
<?php echo '<?xml version="1.0" encoding="utf-8"?>'; ?>
のように書き換える。
以上。