カテゴリごとに読み込むシングルページを変更してデザインを柔軟に切り換える

通常はサイドバーを表示させた2カラムでいいけど、写真を大きく見せたい時はサイドバーをなくして1カラムにしたい。でも条件分岐を使いすぎると管理が大変になってしまう。
そこで見つけたのが、カテゴリで読み込むsingle.phpを切り換える方法です。
sponsored link
INDEX
特定カテゴリ専用のシングルページを読み込む
やりたかったことはこういうこと。
通常は2カラムで、特定のカテゴリの時はサイドバーを非表示にしてcontentを100%で表示させます。今回紹介する方法は以下のような手順です。
- single.phpをコピーして新しくsingle-◯◯.php(ファイル名は変更する)を2つ作る
- 新しく作ったsingle-◯◯.phpの片方から
<?php get_sidebar(); ?>
を削除する - single.phpの中身を書き換える
この方法はタムカイさんの記事を参考にしました。ありがとうございます!
single.phpをコピー、phpファイルを2つ作成してサイドバーを削除する
FTPを使ってsingle.phpをコピーします。僕は子テーマを使っているので子テーマを丸ごとダウンロードしました。
コピーしたsingle.phpファイルはsingle-default.php
とsingle-photo.php
というファイル名にしておきます。ファイル名はなんでも大丈夫です。
single-photo.php
をサイドバーを非表示にしたシングルページにしたいので<?php get_sidebar(); ?>
と検索して削除(もしくはコメントアウト)します。
single.phpを編集してハブにする
元々あったsingle.phpを書き換えて、新しく作ったphpファイルを読み込んでくれるようにします。
1 2 3 4 5 6 7 8 |
<?php $post = $wp_query->post; if ( in_category(array( 'photo' )) ) { include(STYLESHEETPATH.'/single-photo.php'); } else { include(STYLESHEETPATH.'/single-default.php'); } ?> |
photoカテゴリの記事を呼び出したらsingle-photo.php
を読み込んで、それ以外の場合はsingle-default.php
を読み込みます。’photo’にはカテゴリのスラッグを記述します(管理画面の[投稿][カテゴリ]から確認できます)。
子テーマの場合はSTYLESHEETPATH
、子テーマを使っていない場合はTEMPLATEPATH
とするようです。
もし複数のカテゴリに適応させたい場合は3行目を以下のように ,(カンマ)で区切ります。
1 |
if ( in_category(array( 'photo', 'cafe' )) ) { |
あとは作成した3つのsingle.phpをアップロードすればOKです。僕の場合は新しく子テーマを作ってテーマの変更をしました。カスタムヘッダーやカスタム背景はテーマごとの設定になるので注意。
いずれも元々あった子テーマのバックアップは必ずしておいてください。
特定のカテゴリにだけ表示させるウィジェットをフッターに配置する
あとはCSSを変更したり、必要に応じてHTMLとPHPを変更します。
僕の場合はウィジェットをサイドバーにだけ表示していたので、1カラムの場合にだけウィジェットをフッターに表示させるようにしました。
1 2 3 |
<?php if( in_category( 'photo' )) : ?> このカテゴリの場合に表示するもの <?php endif; ?> |
このコードをウィジェットのテキストに貼り付けます。詳しくは下の記事を読んでみてください。
通常ではウィジェットにPHPが使えないので僕はPHP Text Widgetというプラグインを使っています。
カテゴリでは<?php wp_list_categories(); ?>
が、タグでは<?php wp_tag_cloud(); ?>
などのテンプレートタグが使えますね。
色々とやることはあるんですが、カテゴリに応じてレイアウトを柔軟に変更することができるのでかなり便利です。モバイル向けテーマのカテゴリバージョンといった感じでしょうか。
僕はまだ試していないんですが、has_tag
という条件分岐タグを使えばタグで出し分けるなんてこともできそう。