WordPressの投稿ページは index.php

このサイトのリニューアルをしているとき、ブログページだけは現在のようにサイドバーの内容を他ののページと変えたいと思い、変更してみました。

トップページを固定ページにしている場合は、投稿ページを表示するには、新しく空の固定ページを作成して(今回は「ブログ」)、設定>表示設定 で「フロントページの表示」の「投稿ページ」にこの固定ページ(ブログ)を設定します。

ブログ固定ページには別のサイドバーを表示したいので、新しいウィジェットエリアを登録して、これを表示するようにしたのですが、どうしてもうまくいきません。1日悩んだ末、意外な事実(考えてみれば当然かもしれません)がわかりました。

まずやってみたのは以下の手順です。

1.function.php に、管理画面からウィジェットを設定できるように以下の登録をします。blog-widget が新しく登録するものです。 

2. sidebar.php をコピーして、sidebar-blog.php というファイルを作り、以下のように書き換えます。

3. 固定ページテンプレート(page.php) をコピーして blog.php というテンプレートを作り、サイドバーを呼ぶ部分を下記のように変更します。

4. 管理画面で1. で登録したウィジェットエリアに、ブログのページに表示したいウィジェットを登録します。

5. ブログ固定ページの「テンプレート」には、3. で作成した blog.php を設定します。(テンプレート名は「Blog」)

これで完璧のはずですが、どうしてもブログページ用に設定したサイドバーに切り替わらないのです。あらゆる可能性を試してみましたが、他のページと同じデフォルトテンプレートの形で出てきてしまいます。

そして最終的にたどりついた結論が、

「投稿ページ」に指定したブログのトップページは、あくまでも index.php で表示される

ということでした。
ブログ固定ページの「テンプレート」で設定した内容は全く関係なかったわけです。
トップページを「最新の投稿」にしてないし、他に index.php を使用しているところもないので、 index.php から sidebar-blog.php を呼ぶことにしました。