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

index.htmlでアーカイブページを表示させる - WordPressが振り分ける前にREQUEST_URIを変更する

説明

静的なサイトでは、各ディレクトリに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を付けてもアクセスできるようになったので、一度メモしておく。

お勧めコンテンツ

get_archives_link(2012年3月6日 登録)

string get_archives_link( string $url, string $text [ , string $format = 'html' [ , string $before = '' [ , string $after = '' ] ] ] )
アーカイブページのリンクテキストを取得する。

get_taxonomies(2014年5月30日 登録)

array get_taxonomies( [ array $args = array() [ , string $output = 'names' [ , string $operator = 'and' ] ] ] )
タクソノミー情報を取得する。

convert_smilies(2011年7月11日 登録)

string convert_smilies( string $text )
顔文字を対応する画像(imgタグ)に変換する。

delete_post_meta(2010年2月13日 登録)

bool delete_post_meta( int $post_id, string $meta_key [ , mixed $meta_value = '' ] )
投稿情報のカスタムフィールド情報を削除する。

remove_query_arg(2013年1月22日 登録)

string remove_query_arg( mixed $key [ , bool $query = false ] )
クエリーURIからパラメータ(キー名=値)を削除する。

最終更新日時 : 2011-10-14 13:44