私がWordPressを使い始めたのは2008年です。そのきっかけとなったものは、「ホームページに新着記事一覧を自動的に表示したい!」「掲示板ではなく、記事に対してのコメントを受け付けたい!」といったところでした。でもブログやSNSじゃ物足りない。何とか自分のホームページに簡単にリンクを貼ることはできないのだろうか。そんなことを思っていた時に出会ったのがWordpressというシステムでした。

 あれから10年以上WordPressを使い続けていますが、何度もバージョンアップが繰り返され、今やElementorというプラグインを使えばほぼできないことはないくらいいろいろなことができます。

 しかし!ただ1つ不満が残るとすれば、どのページも同じデザインになってしまうこと。記事に合わせてヘッダーやサイドバーなどが変えられれば最高なのに。そう思って、今までいろいろなことを試してきました。このページは、その記録をまとめたものです。

 なお、結局どうしたらよいかは、他のページに書いていますので急いでいる方はトップページよりそちらの記事へお進みください。

custom-post-templates

 custom-post-templateというプラグインを使うと、友の会のページ、子育てのページ、クイズのページといったように、記事によってデザインを変えられます。記事の内容によってデザインが変わるので、メリハリがついていい感じなのです。ただし、2012年に更新がストップしてしまい、今からこれを使うというのはオススメできません。

 さて、当時、WordPress2.9にバージョンアップした時に一度使えなくなり、プラグインのソースを書き換えました。

/* (修正前) */
$template_data = implode( ”, file( WP_CONTENT_DIR . $template ) );

* (修正後) */
$template_data = implode( ”, file($template ) );

 その後もこのプラグインを使いながら、記事によってサイトのデザインが変えられないものかと研究をしてきました。ずっと、上手くいっていたと思っていたのですが、実は携帯電話で見るとレイアウトがおかしくなっているということが後から分かりました。

 当時は、レスポンシブ対応のためにKtai Styleというプラグインを使っていましたので、これも研究しました。

 Ktai Styleのテーマファイルのshingle.phpやheader.phpを編集したこともありましたがそれも結局ダメ。WordPressのフォーラムで、「single.php内でカテゴリーを分岐させ、自己解決しました。」という書き込みを見つけたので、そこをもう少し詳しく教えていただきたいと投稿したのですが回答はもらえず。解決できそうでできない状態が続きかなり悩みましたが、結局はバージョンアップが止まったことと、携帯電話で見ると型崩れを起こしていることなどを考慮して、このプラグインを使用することをやめました。

▶ スポンサードリンク


テンプレートに合わせて複数のタイプのサイドバーを使い分ける

 テンプレートファイルを編集してデザインを変える方法を使う場合、サイドバーについてもそれに応じたものに変えることができます。もちろん、サイドバーにあたる部分を各ページに直接打ち込むこともできますが、WordPressでは、<?php get_sidebar(); ?>という命令でサイドバーのphpファイルを読み込んでいます。実はこのphpファイル。次のようにするとこの問題が解決するのです。

・通常のサイドバー

sidebar.phpというファイル名で作っておき、<?php get_sidebar(); ?>で読み込む。

・別バージョンのサイドバー
sidebar-2.phpというファイル名でつくっておき、<?php get_sidebar(‘2’); ?>で読み込む。

 「-」(ハイフン)の後の数字を増やしていけば、何パターンでもできてしまいます。なお、現在はJetpackの機能を使えば、カテゴリ条件に合わせてウィジェットの表示も変えられますので、このような作業は不要です。トップページから、「サイドバーをアレンジする」へお進みください。

所属するカテゴリによって投稿のshingle.phpを変える。

 Custom Post Templatesは、投稿時にテンプレートを自由に選べるというメリットがありますがいろいろな不具合がありました。次に紹介する方法は、カテゴリに応じて自動的にテンプレートを選んで表示してくれるというものです。

 投稿時に選ぶことはできませんが、子育て記事なら子育て記事用のテンプレートとだいたい決まっているので、カテゴリに応じてテンプレートが設定されるということでも支障はありません。さらにこの方法なら特別なプラグインは必要ありません。

まず、デフォルトのshingle.phpをshingle1.phpやshingle-sonota.phpなどにリネームして保存します。
そして、shingle.phpには下記のように記事を振り分けるコードのみを残します。

<?php
 $post = $wp_query->post;
 if ( in_category('8') ) {
 include(TEMPLATEPATH . '/single8.php');
 } elseif ( in_category('14') ) {
 include(TEMPLATEPATH . '/single14.php');
 } else {
 include(TEMPLATEPATH . '/single-sonota.php');
 }
 ?>

あとは、shingle1.phpなどを好きなようにアレンジしてしまえばOKです。

 上のコードでは、カテゴリ8の記事はshingle8.phpを表示し、カテゴリ14はshingle14.phpを表示、その他はshingle-sonota.phpを表示するという命令です。elseifで条件を増やせばなんぼでもできます。これで携帯電話からの閲覧でも型崩れすることなくできるので、さらにサイト作りの幅が広がります。

 この方法は、まだまだ使えるかもしれませんね!

▶ スポンサードリンク


404エラーページのサイドバーを除去

「ページが見つかりません404エラー」のページでアドセンス(AdSense)を非表示にする方法です。現在はこのような方法をとらなくても、選ぶテーマによっては自動的に非表示になりますし、万一表示される場合もJetpackを使えばウィジェットの条件設定で対応できます。さて、私が古いバージョンのsimplicityを使っていたころの記録です。この方法を探してこのページにアクセスされた方が、「あっ!こういう方法ですればよいのか!」と気付き、無駄な作業をしなくて済むかもしれませんので記録して残しているものです。

 まず、<?php get_sidebar(); ?>がどこにあるのか探しました。STINGERシリーズやgushシリーズは404.phpにありましたが、Simplicityにはありません。代わりに404.phpには、<?php get_footer(); ?>があり、footer.phpを読み込むことが指示されています。「ということは…」と思い、footer.phpを見るとやっぱり<?php get_sidebar(); ?>がありました。

 さてここで問題です。フッターのサイドバーを削除してしまうと、すべてのページのサイドバーが表示されなくなります。それはさすがに困ります。ここで生きたのが先ほどのサイドバーの知識です。

・404.phpのフッター

 サイドバーを削除したfooter‐2.phpというファイルを作成し、404.phpのフッターを<?php get_footer(2); ?>として読み込むようにする。

 これで404エラーの時にはサイドバーの無いフッターを読み込むことになり、サイドバーが表示されなくなります。こんなアレンジも過去にはやっていたというお話でした。