今回は、面白い質問と面白い参考サイトをいただいたので、「WordPressサイトのHOMEでカテゴリーページのように表示していく方法」について記載していきます。
これだけだと意味がわからないと思いますので、どういうサイトかを具体的に説明していきます。
目次
WordPressのパンくず「HOME」を押すとカテゴリーページに!?

最初は質問の意味がわからなかったのですが、要点をまとめるとこうです。
- サイトのTOPページとパンくずの「HOME」でアクセスされる先が違う
- パンくずの「HOME」を押すと、記事一覧の無いカテゴリーページ(固定ページ)に飛ぶ
- パンくずは「HOME > A > a」になっており、「A」を押すと、カテゴリーの記事一覧ページに飛ぶ
- 「HOME > A > a」と「HOME > B > b」の場合のHOMEは違うページになるということ
これで意味が通じるでしょうか。少しむずかしいですね。参考サイトが見せられたらすごく良いのですが、プライバシーなどの問題で控えます。
もっと具体的にサイトマップ形式で見たら分かるかもしれません。
具体的なサイトの構造マップ
サイトの構造としては以下のような構造です。
- TOP
- A(カテゴリー?)
- a1
- a2
- a3
- B(カテゴリー?)
- b1
- b2
- b3
- C(カテゴリー?)
- c1
- c2
- c3
- A(カテゴリー?)
これだけ見ると普通なサイトのように感じますよね。ですが、パンくずリストは
「HOME(Aのカテゴリー詳細ページ) > A(Aの記事一覧ページ) > a(記事)」となっているのです。
この「Aのカテゴリー詳細ページ」は固定ページで作られていました。
WordPressの知識に明るい方は、これをどうやって実装するのか考えてみてほしいです!
パーマリンクの構造
パーマリンクの構造はこんな感じです。
- a1にいる場合:「HOME > A > a1」
- b1にいる場合:「HOME > B > b1」
- c2にいる場合;「HOME > C > c2」
これらのHOMEがそれぞれ異なるページになっています。
実装されていた方法
それでは、実際に実装されていた方法を紹介します。
最初は僕も、テーマファイルを改造してHOMEのパーマリンクを細かく設定できるようにしているのかと考えました。ですが、違ったのです。
WordPressサイトをサブディレクトリで複数立てて、サブディレクトリで運用する。
です。つまり、A,B,Cはカテゴリーに見えていたようで、カテゴリーではなくサイトTOPだったのです。
URLも「http://example.com/A/a」「http://example.com/B/b」となっていたので勘違いしやすいですね。
複数のワードプレスのサブディレクトリで運用することで、HOMEの飛び先をサブディレクトリTOPにできます。ルードドメインのWordPressは各サブディレクトリへの導線を貼るだけで十分なのです。
1つのWordPressで実現するには?
これを一つのWordPressで実現できる!と思う方もいるでしょう。実際、僕も最初は思っていました。大体のロジックはこんな感じです。
- パンくずリストのHOMEがアクセスする固定ページをカスタマイズ、もしくは指定できるようにする
- 記事のカテゴリーを読み取ってパンくずリストを描画する
- パンくずの描画は「指定ページ > カテゴリー > 記事」になるようにする
これなら、確かに実装可能です。理論的にはですが。
何個か問題になるポイントがあるので、「おやっ?」と思ったのが、今回の発見につながりました。
問題になりそうなポイント
先程の実装方法だと、問題になるポイントがあります。
[st-mybox title=”注意ポイント” fontawesome=”fa-exclamation-circle” color=”#ef5350″ bordercolor=”#ef9a9a” bgcolor=”#ffebee” borderwidth=”2″ borderradius=”5″ titleweight=”bold”]
- 固定ページの指定方法はどうするのか(IDで指定するのが普通)
- IDで指定する場合、カテゴリーを作る動作とは別の動作なので指定を忘れるかもしれない。その場合どう回避処理するか
- HOMEを押してもTOPに戻ってこれないことのユーザー体験はどうなのか
[/st-mybox]
このあたりが問題になって、実装がかなり大変そうだなと思いました。「人間がやる実装じゃないぞ…もし、やってたらこの管理者はサイボーグだ…」と思いました。
また、参考にしたサイトではHOMEを押してもロゴを押してもTOPに戻れないので「なんじゃこりゃ!」ともなりました。
このあたりの問題が原因で、1つのワードプレスで実装するもんじゃないなと思います。
複数のWordPressをひとつのMySQLデータベースで
複数のWordPressを立てる場合、気になるのはMySQLのデータベースの圧迫ですよね。
レンタルサーバーには、MySQLを立てられる数に限度があったりするので、無駄に使いまくりたくないという方も多いでしょう。僕もその一人です。
ですが、今からいうポイントを押さえると、ひとつのMySQLデータベースで複数のサイトが立てられます。
WordPressインストール時の「データベース接頭辞」を異なるものにする。
これだけです。デフォルトでは「wp_」みたいなのになってるはずなので、「wp1_」とかで作っていきます。
ちなみに、レンタルサーバーによってはWordPressの自動インストール機能でこの「データベース接頭辞」の存在を見れない人もいるはずです。
そういった方は、WordPress標準のインストールの仕方を調べましょう。
