WordPressのインストールでトップページからWordPressにする方法

WordPressをインストールするときにドキュメントルート以下にWordpress用のディレクトリ(/cms/)を1つ作ってその中にインストールする場合はアクセスURIが

http://example.com/cms/

のようなかたちになってしまいますが、トップページから全部Wordpressにしたい場合はいくつか方法があってちょっと設定変更しないとダメです。

  1. トップページも本体のWordpressの機能にしてしまう(この場合テーマのindex.php、home.php、front_page.phpが使えます。)
  2. トップページだけWordpressの機能を使えるようにする。(この場合は、たいていのWPタグを使えるようにしつつもPHPをスクラッチで書く感じ。)

ということになると思います。
まずはWordPressのダウンロードをしておきます。

トップページも本体のWordpressの機能にしてしまう

任意のディレクトリ名でWordpressをアップロードするところまでは同じです。仮に/cms/というディレクトリにします。アップロードが終ったら、http://example.com/cms/にアクセスするとインストール画面になるのでいつものように進めます。データベース接続やWordpressの初期設定をします。/cms/wp-login.phpにログインできるようになって、/cms/にWordpressのトップページが表示されます。

1. index.phpをつくる

/cms/index.phpをそのまま/index.phpにコピーします。エディタで開いて

require( dirname( __FILE__ ) . '/wp-blog-header.php' );
↓
require( dirname( __FILE__ ) . '/cms/wp-blog-header.php' );

という感じでwp-blog-header.phpqをrequireできるようにしてあげます。これで、http://example.com/にアクセスするとWordpressのトップページが表示されるようになります。

2. /cms/を見えなくする

機能としてはここまでで問題ないのですが、ページを遷移してゆくと/cms/がWordpressのトップページになっていてトップページが二重化しているのと同時にすべてのアーカイブページは/cms/以下のパーマリンクでアクセスすることになります。これを修正するには、管理画面からURLの設定情報を変更します。
管理画面の「設定」→「一般設定」から、
WordPress アドレス (URL): http://example.com/cms
サイトアドレス (URL): http://example.com/cms
となっている項目あると思うで、サイトアドレスのcmsを削除します。最後のスラッシュは削除になります。

WordPressアドレス (URL): http://example.com/cms
サイトアドレス (URL): http://example.com ←ここ変更

これで保存するとhttp://example.com/がトップページ、管理画面のURIはhttp://example.com/cms/wp-login.phpとなります。アーカイブページにも/cms/は現れなくなります。
ちなみにDBテーブルを触接さわれる人はwp_optionsテーブルのデータをいじった方が楽かもです。

デフォルトの記事IDをひっかけているパーマリンクは問題ないですが、パーマリンクの変更をする際にはドキュメントルート以下の.htaccessに以下を追加しておかないと駄目かもしれません。(追加しないと駄目です。)

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

これでだぶん大丈夫です。

トップページだけWordpressの機能を使えるようにする

いわゆるプレーンなPHPにWordpressの機能を組み込むといった作業です。/index.phpを作成して、

<?php
require( dirname( __FILE__ ) . '/cms/wp-blog-header.php' );

という風に頭でwp-blog-header.phpを呼び出せばよいだけです。場合によってはwp-load.phpを呼ばないとエラーになる関数もあったような気がします。
これ以降は自由にかけばよいです。
この場合は、/cms/もテーマにあるトップページを表示してしまうので、ここらは用途によっていろいろ対処した方がいいかもです。

Last update: 2017.07.03 (月)