普段は2カラムレイアウトだけど、特定のカテゴリは3カラムレイアウトにしたい
という場合の備忘録です。
今回実装する方法では、固定ページを使用して3カラム目を追加します。
次の方法はSimplicity2のテーマに行いました。編集自体は子テーマに行います。
目次
概要
大まかな手順
- 固定ページに3カラム目の内容を記載(非公開)
- header.php に、”あるカテゴリ”の場合は、”固定ページの内容を3カラム目として追加”と指定します。
※ header.php はSimplicity2テーマのものをコピーして使用します。
ファイルの構成
使用するファイル・固定ページは、以下の4つになります。
・固定ページ(新規作成)
・left-sidemenu.php(新規作成)
・left-sidemenu.css(新規作成)
・header.php(Simplicity2のテーマからコピーして使用)
それぞれの関連は、次のようになります。
固定ページ(新規作成)
3カラム目に追加する内容(HTML)を定義します。
left-sidemenu.php(新規作成)
固定ページの内容を取得するために使用します。
left-sidemenu.css(新規作成)
3カラム構成にした際の、CSSを定義します。
例えば、「サイドメニュー自体のスタイル」や、3カラムにすることによりページの横幅が増えるので、「ページ全体のレイアウトの調整」などに使用します。
header.php(Simplicity2のテーマからコピーして使用)
特定のカテゴリの場合に、left-sidemenu.php と left-sidemenu.css を読み込む処理を追加します。
詳細
1.固定ページの作成
固定ページは、ステータスを「非公開」として保存します。
例えば、メニューリンクを3カラム目として追加する場合は、以下のようにします。
1 2 3 4 5 |
<ul> <li><a href="https://〜">リンク1</a></li> <li><a href="https://〜">リンク2</a></li> <li><a href="https://〜">リンク3</a></li> </ul> |
2.left-sidemenu.php の作成
固定ページの内容を取得します。
1 2 3 4 5 6 7 8 9 10 |
<div id="left-sidebar" role="complementary"> <?php $page_data = get_page_by_path('固定ページのスラッグ'); $page = get_post($page_data); $content = $page -> post_content; echo $content; ?> </div> |
3.left-sidemenu.css の作成
3カラム目のスタイルや、3カラムに合わせた全体のスタイルの定義を行います。
4.header.php(Simplicity2のテーマからコピーして使用)
あるカテゴリの場合に、left-sidemenu.php と left-sidemenu.css を読み込むようにします。
まず、left-sidemenu.css については、</head>タグ 直前に読み込む処理を追加します。
1 2 3 4 5 6 |
<head> ・・・ <?php if(in_category('カテゴリ名') ): ?> <link rel="stylesheet" href="<?php echo get_stylesheet_directory_uri(); ?>/left-sidemenu.css" type="text/css" /> <?php endif; ?> </head> |
続いて、left-sidemenu.php を読み込む処理を追加します。
header.php の下部には、もともと次のようなコードがあります。
1 |
get_template_part('before-main'); //メインカラムの手前に挿入するテンプレート(3カラム作成カスタマイズ時などに) |
ここに少々手を加えて次のようにします。
1 2 3 4 5 6 7 |
<?php if(in_category('カテゴリ名')) { get_template_part('left-sidemenu'); }else{ get_template_part('before-main'); //メインカラムの手前に挿入するテンプレート(3カラム作成カスタマイズ時などに) } ?> |
※元々のコードの記載にあるように、「before-main.php」を直接編集して、3カラム構成にすることもできます。今回はカテゴリ別に分かりやすいように、「left-sidemenu.php」を作成して3カラム構成にしています。
5.サーバーに資材をアップロード
ここまで編集を行ったファイルを、子テーマフォルダ(simplicity2-child)にアップロードします。
これで、3カラムレイアウトが適用されます。