WPでページによってサイドバーの中身を変える

水曜日, 2月 15th, 2012

 WordPressのサイドバーはウェジェット機能によって簡単に内容を変えられます。しかし、ページによってサイドバーの内容を変えようとするとちょっと工夫が必要です。
 たとえばこちらのホームページを見て下さい。
 「會津野 茂三郎」
 知り合いのお蕎麦屋さんのホームページを私が作ったものです。
 「ご案内」や「お品書」のサイドバーと「こぼれ話」のサイドバー、また「ブログ」のサイドバーがそれぞれ違っています。このようにページによってサイドバーの内容を変えようというのです。
 
 その為にまずする事はいくつかのページのテンプレートを作らなければいけません。新しいページのテンプレートを作るのは前に書いてありますのでそれを参考にして下さい。WP新たなページのテンプレート
 簡単に言うと雛型のページの先頭に

<?php
/*
Template Name: page2
*/
?>

というのを入れるのです。page2の部分は任意のローマ字数字で結構です。分かりやすいようにして下さい。
WP新たなページのテンプレートでは get_header() と一緒のPHP内に入れていますが、独立させた方がわかりやすいでしょう。
 
 さてここからが本番です。
 (A)めんどくさがり屋さん用 と (B)きちんとしたがり屋さん用 で説明します。
 
 
(A)めんどくさがり屋さん用
 まずはサイドバーの種類をいくつつくるのか。
 テーマの編集の中の「テーマのための関数(functions.php)」を開いて下さい。
 その先頭にこういう風に書きます。

<?php
register_sidebar();
register_sidebar();
register_sidebar();
?>

 これでサイドバーが3種類作れます。4種類作りたければregister_sidebar();を追加してください。
 この方法だと、WPの方で勝手にウェジェットに「sidebar-1」「sidebar-2」というように表示してきます。ウェジェットのタイトルです。

 次におこなう事はサイドバーテンプレートを必要なだけ作る事です。今回は3ツにしましょう。
 初めからあるサイドバーテンプレートの名前をちょっと変えます。
 「sidebar.php」となっているのを「sidebar-1.php」と名前を変えて格納します。次に「sidebar-1.php」をコピーして「sidebar-2.php」「sidebar-3.php」を作って、同じ場所に入れて下さい。
 ここまでだと、サイドバーテンプレートの中身は同じですので、今度はサイドバーテンプレートの中を変えます。ウェジェットを使わずにサイドバーを作る場合は好きなようにかえていただければ結構です。
 ウェジェットを使う場合はサイドバーテンプレートの中の「dynamic_sidebar()」という所を少しいじります。「dynamic_sidebar」がウェジェットに対応しています。
 たとえば「sidebar-1.php」で説明すると、
<?php dynamic_sidebar(); ?> を
<?php dynamic_sidebar(1); ?>と()の中に1/2/3をそれぞれ入れます。
 これでウェジェット内の「sidebar-1」がサイドバーテンプレートの「sidebar-1.php」に対応し、「sidebar-2」が「sidebar-2.php」、「sidebar-3」が「sidebar-3.php」にそれぞれ対応します。
 サイドバーが出来ましたので、今度は最初に作ったページのテンプレートにそのサイドバーを組み込みます。
 いじりたいページテンプレートを開いていただきます。その中に「<?php get_sidebar(); ?>」という所があります。これがサイドバーをそのページに組み込むための関数です。この()の中に組み込みたいサイドバーの数字を入れて下さい。「<?php get_sidebar(1); ?>」と、このように。
 これで終了です。後はウェジェットをいじって何を載せるか決めるだけです。
 
 
(B)きちんとしたがり屋さん用
 めんどくさがり屋さん用ではウェジェットのタイトルをWPが勝手に決めていましたが、そこはちゃんと自分で決めたいというきちんとしたがり屋さん用です。
 まずは、テーマの編集の中の「テーマのための関数(functions.php)」を開いて下さい。
 そして一番に上にこのように記述して下さい。

<?php
register_sidebar(array(‘name’=> ‘Sidebar-a’));
register_sidebar(array(‘name’=> ‘Sidebar-b’));
register_sidebar(array(‘name’=> ‘Sidebar-c’));
?>

 これでウェジェットのタイトルが「Sidebar-a」「Sidebar-b」「Sidebar-c」となります。
 そしてサイドバーテンプレート、「sidebar.php」となっているのを「sidebar-a.php」とします。そしてその内容をコピーして「sidebar-b.php」「sidebar-c.php」というテンプレートを追加します。
 今度はサイドバーテンプレートの中を変えます。
 サイドバーテンプレートの中の「dynamic_sidebar()」の()の中にSidebar-a/Sidebar-b/Sidebar-cを入れます。
 たとえば「sidebar-a.php」で説明すると、
<?php dynamic_sidebar(); ?> を
<?php dynamic_sidebar(‘Sidebar-a’); ?>と()の中にウェジェットのタイトル全部を入れます。「Sidebar-b」「Sidebar-c」もそれぞれのサイドバーテンプレートの中に組み込んで下さい。この時Sidebar-aの前後に ’を入れるのを忘れずに。数字ではなく文字の場合は必要です。
 そして最後にページテンプレートにサイドバーを組み込みます。
 今回は1/2/3の数字ではなく、サイドバーテンプレートの名前に使ったa/b/cを組み込んで下さい。
 「<?php get_sidebar(‘a’); ?>」と、このように。ここも ‘ を入れるのを忘れずに。
 これで終了です。

WordPressのテーマを手作り

火曜日, 8月 16th, 2011

 WordPressのテーマを手作りしてみました。と言っても、ど素人の私にまったくの自力で作れるはずはありません。「WordPress レッスンブック 3.x対応」という本を買い込んで、その通りに作っていきました。そうしたら出来るもんですね。最後にヘッダーや色をカスタマイズして出来上がりました。
その作ったテーマを使用しているブログがこちらです。
「古い本棚」
 
 皆様も挑戦してみてはいかがですか。