WordPress をサイトの一部のみで利用する

サイト制作時に「サイトの大部分は制作業者が作成・管理するが、新着情報だけユーザー側で作成・管理したい」というような要望を受けることって、比較的多いと思います。そのような場合に新着情報の管理を WordPress で行う場合の設定について割とハマったのでまとめておきます。

ディレクトリ構成は、/wp/ 以下に WordPress の構成ファイルを設置し、以下のように WordPress を設定します。

設定→一般

あとは WordPress 以外の部分を作っていくだけですが、ポイントは /.htaccess です。普通に WordPress をインストールした場合には、.htaccess によってリクエストは index.php に集められますが、WordPress の index.php を /wp/index.php に置き、それとは別の /index.php を置く場合には、.htaccess を書き換える必要があります。

<IfModule mod_rewrite.c>
RewriteEngine On

# プレビューのときは index.php を経由せずに /wp/index.php に飛ばす
RewriteCond %{QUERY_STRING} preview=true
RewriteRule ^index\.php$ /wp/index.php [L]

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp/index.php [L]
</IfModule>

基本的にはリクエストを /wp/index.php に集めるようにすればよいのですが、下書きのプレビューだけ URL が http://example.com/?page_id=1&preview=true の形式になっているため、別に設定してあげないとプレビューが表示されず、/index.php が表示されてしまいます。

WordPress は設定を変更すると /.htaccess を自動的に書き換えてくれますが、上記のように .htaccess を書き換える必要があり、これを WordPress が書き換えてしまうと元に戻されてしまうため、パーミッションを 444 などにし、勝手に書き換えられないようにしておくことをおすすめします。

この記事を書いた人
グッドネイバー

“ Webに悩むお客さまの「よき隣人」でありたい ” をモットーに、Web システム開発(主に Laravel)、Web マーケティング支援の仕事をしています。お仕事のご依頼・ご相談はこちらからお気軽にどうぞ。