Scribble at 2023-06-07 16:06:40 Last modified: 2023-06-07 16:13:18

WordPress でコーポレート・サイトを構築するときには、非常によくある話だと思うのだけれど、あまり実務として気にしてない人が多いのか、ブログ記事の話題としても取り上げられているケースが少ないように思うことが幾つかある。というか、正直なところ WordPress の本当の制作実務の話題なんて、実は殆ど取り上げられたり議論されてないんだよね。個人事業主や小規模な制作会社の初心者向けの解説ばかり山のようにあって、自分たち事業者が構築や制作にあたってどう考えているかという話は殆どない。なので、このほど WordPress はリリースされてから Turn 20 となったわけだけど、僕らのように20年間を共にしてきたようなプロから見て、まともに議論の相手になるような制作会社なんて殆どないんだよね。もちろん、知見が蓄積されていたり数多くの実績をもっている人々もいるだろうとは思うけど、記事を書いては数年でブログを閉鎖したり倒産してるような小僧の事業者が書き殴っては放置しているゴミみたいなものの山でしかない。たとえば、WordPress で飯を食ってるような物書きや制作会社で、WordPress のコア・システムを題材にしてデザイン・パターンを議論してる人たちなんて、この国にいるのかね。いるとしても、たぶん Kusanagi をリリースしてるプライム・ストラテジーさんとか、ごくごく一部だろうと思う。

で、前置きばかり書いてもしょうがないので、小さいことだが一つだけ話題として提供しておくと、WordPress の記事や固定ページというのは、原則として /index.php のクエリによって特定のページをリクエストするか、あるいはディレクトリ構造を rewrite モジュールで元のクエリに置き換えてリクエストするかという方式を採用している。管理画面で「パーマリンク」というメニューで設定できる内容が、それらのリクエスト方法に該当する。すると、よくある話として /%category%/%postname%/ というパーマリンクの疑似ディレクトリ構造を設定して、

https://foobar.com/category/postname/

という URI でアクセスして記事を表示するように設定していると、サーバ上で /category というディレクトリを作ったときに、

https://foobar.com/category/

へアクセスすると、作成された /category というディレクトリにアクセスすることになる。よって、たとえば「カテゴリーのトップ・ページ」みたいなものを設定して、テンプレートに category.php というファイルを作ってみても、category.php を使ったカテゴリーのトップ・ページは表示されない。そして、幾つかのブログ記事では、それが「よろしくないこと」なので解決すると称して色々と書いていたりすることがある。でも、それは本当に解決しないといけない「よろしくないこと」なのだろうか。

企業サイトを構築するときは、逆にそういう仕様を利用することだってある。たとえば、お知らせ用のコンテンツとして、個々のお知らせ内容は記事として投稿したいのだが、記事のカテゴリーのトップページなんてものは必要ないという仕様だってありえる。すると、カテゴリーの slug を "news" としておき、そして固定ページとしてわざと /news というページを作成する。そうすると、/news にアクセスしても記事のカテゴリーのトップではなく、/news という固定ページが表示される。それどころか、WordPress に表示させる必要すらないとか、どこか別のページにリダイレクトすればいいというなら、固定ページをダミーとして作成しても中身は無しで構わない。そして、rewrite を使った URL の書き換えよりも本当にあるディレクトリへのアクセスが優先されるという規則性を利用して、/news/index.html という実際にサーバへ設置した静的なページへアクセスさせることだって、わざとやる場合があるのだ。

他にも、問合せフォームのいわゆる「サンクス・ページ」として、WordPress が表示するコンテンツではなく、わざと静的なページを処理が終わった後のリダイレクト先に指定して表示するというやり方もある。そういうページは静的なコンテンツを表示するため、WordPress で表示するページとヘッダーやフッターなどのデザイン要素を共有できないから取り回しが面倒だと思うなら、その静的なページでは /wp-blog-header.php を先頭に読み込んでおけば、既存のテンプレートを <?php get_template_part( 'header' ); ?> のように読み込んで共有できる。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook