この記事は最後に更新してから1年以上経過しています。

index.htmlでアーカイブページを表示させる

説明

静的なサイトでは、各ディレクトリにindex.htmlファイルを置き、そのディレクトリの内容を紹介することが多い。WordPressで構築したサイトも同様にできないかと考え、試行錯誤してみた(こんなことを考えてるのは自分だけだろうか!?)。

WordPressの場合、パーマリンク設定のカスタム構造で「/%category%/%postname%.html」のように「%postname%.html」を含めることでindex.htmlのページは準備できる。ただし、「%postname%」に適用される投稿名はブログ内でユニークであるため、index.htmlでアクセスできるページは1ページだけになってしまう。つまり、各ディレクトリごとのindex.htmlとして投稿することはできない(2つ目はindex-2.htmlみたいになってしまう)。

もともとindex.htmlで表示したい内容は、カテゴリーや投稿タグアーカイブページの内容と同じでいい。とするならば、各ディレクトリ分のindex.htmlを用意するのではなく、適切に振り分け(リダイレクト?)できればことは足りることになる。WordPressにはリクエストURLを振り分け処理を行う「WordPress Rewrite API」が存在しているが、こちらはまだ使いこなせていないので、他の方法を考えてみた。

最終的にたどり着いたのがこちら。

$_SERVER['REQUEST_URI'] = str_replace( '/index.html', '', $_SERVER['REQUEST_URI'] );

このコードを自テーマのfunctions.phpの先頭に記述するだけだ。こうすることで、WordPressが振り分けを行う前にリクエストされたURLの'/index.html'は削除され、適当なアーカイブページが表示されることになる。アーカイブページが複数ページに分割されている際のページング時のURLはこれだけではだめなのだが、とりあえず各ディレクトリ(アーカイブ)に対してindex.htmlを付けてもアクセスできるようになったので、一度メモしておく。


最終更新 : 2011年10月14日 13:44

お勧め

add_shortcode(2018年5月27日 更新)

void add_shortcode( string $tag, mixed $func )
ショートコード(独自タグ)を追加する。ショートコードは、投稿記事内でテキスト内容がない[tag]や、テキストを内包する[tag]テキスト[/tag]の書式で使用できる独自タグのこと。標準の状態では、 the_content関数によって表示する直前のフィルター処理内でパラメータ$funcで指定した関数・メソッドが実行される。

get_user_setting(2022年1月31日 更新)

mixed get_user_setting( string $name [ , string $default = false ] )
ユーザーインターフェイス設定を取得する。

have_posts(2018年5月27日 更新)

bool have_posts( )
次の投稿データが存在するかを調べる。

in_category(2018年5月27日 更新)

bool in_category( mixed $category [ , mixed $post = null ] )
投稿情報が指定したカテゴリーに属しているか調べる。

add_feed(2024年6月24日 更新)

string add_feed( string $feedname, callable $callback )
フィードを追加する。