2012年1月
データの移行に伴い、phpコードの文字化けが発生している箇所があります。
&lti や > のような文字化けが出ているコードはコピーしないでください。
現在、手直し中です。すみません。

sidebar.php サイドバーの「ウィジェット」「マニュアル編集」について

サイドバー(sidebar.php)のカスタマイズには、「ウィジェット」と「マニュアル(手書き編集)」の二通りあります。

マニュアルは、テーマ・テンプレートのPHPコードを手書きで編集しますが、ウィジェットは、カテゴリー、新着記事、タグクラウドといった構成部品を、次のようなパネル操作でカスタマイズします。

ウィジェットは、管理画面メニューの『外観』→『ウィジェット』から操作することができます。

WordPress

各メニューはドラッグ&ドロップで移動し、編集画面を開いてカスタマイズします。

WordPress

実際の画面。

WordPress

§ ウィジェットの自動切り替えとカスタマイズ

ウィジェットの不便な点は、一度設定してしまうと、すべてのサイドバーに内容が反映されることです。

たとえば、sidebar-●●.php というファイルを作成し、手動でカテゴリーリストなどのテンプレート・タグを書き込んでも、( !function_exists(‘dynamic_sidebar’) が存在し、ウィジェットが一つでも設定されていれば、マニュアル編集した分は反映されなくなります。

ウィジェットの内容を反映させたくない場合、function_exists と末尾のendifを削除します。
次のコードはSidebar_1というIDのウィジェットを利用しているケース。

<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Sidebar_1') ) : ?>
 ☆ウィジェットが設定されている場合、この区間のテンプレート・タグは無視され、ウィジェットの内容が優先されます☆
<?php endif; ?>

逆に、独自のウィジェットを反映したい場合、function.phpを使ってウィジェットを増設すると便利です。

「フォトギャラリー」という名前のウィジェットを id=gallery で登録する場合。お使いのテーマ・ファイルのfunction.phpに次のように記述します。divや見出しタグの内容はご自由に。

<?php
	if ( function_exists('register_sidebar') ) {
	register_sidebar(array(
		'name' => 'フォトギャラリー',
		'id' => 'gallery',
		'before_widget' => '<div class="●●">',
		'after_widget' => '</div>',
		'before_title' => '<h3>',
		'after_title' => '</h3>'
	));
}
?>

次に任意のsidebar.phpにと書き込めばOK。
テーマ・テンプレートによって、コードの書き方が異なるので、最初は分かりにくいかもしれませんが、基本は dynamic_sidebar(”)にウィジェットのIDを記述します。ヘッダーやフッターに設置するウィジェットも同じ要領です。

<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('gallery') ) : ?>
<?php endif; ?>



一例として、Love、Kosodateといったカスタムポスト・タイプに応じてサイドバーを使い分け、それぞれのコンテンツに応じた記事リストや広告バナーが表示されるよう自動で切り替えています。

上記で紹介したようにfunction.phpでウィジェットを登録し、カスタムポストに応じたsidebar-●●.phpを読み込み、そこに指定したウィジェットを表示させる方法です。

ウィジェット 増設 function.php

Ads

Leave a Reply

Trackback URL

QR Code Business Card