「Twenty Eleven」と「Twenty Twelve」のsidebar.phpでのdynamic_sidebarの使い方

WordPressテーマカスタマイズ

sidebar.phpで、ウィジェットを表示するためにdynamic_sidebar関数が使用されています。そこで、Twenty ElevenとTwenty Tweleveで使用方法が違うので、その違いについて。

関数の機能について
dynamic_sidebar( ‘id’ )とした場合、idに指定したウィジェットを表示して、表示することが出来れば返り値はTrueを返し、表示できなければFalseを返します。

【Twenty Eleven】

<?php if ( ! dynamic_sidebar( 'sidebar-1' ) ) : ?>
・・・
<?php endif;  ?>

Twenty Elevenでは、if条件式の中に、「! dynamic_sidebar( ‘sidebar-1’ )」とあり、sidebar-1にウィジェットがあれば表示をして返り値にTrueを返し、そのままだとif文の中にあるコードを実行するので、dynamic_sidebar関数に!をつけて結果をFalseにしてif文を終わらせています。

逆にsidebar-1にウィジェットが無ければFalseを返すので、そのままだとif文が終了してサイドバーに何も表示されないので、!でdynamic_sidebar関数の結果を反転させてTrueにして、if文の中にあるコードを実行させてサイドバーを表示します。

もう少し短く説明すると、idがsidebar-1にウィジェットがあれば、それを表示して返り値FalseをTureにしてif文を終了し、ウィジェットが無ければ返り値FalseをTrueにして「・・・」の部分を実行するコードになります。

【Twenty Twelve】

<?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
		<div id="secondary" class="widget-area" role="complementary">
			<?php dynamic_sidebar( 'sidebar-1' ); ?>
		</div><!-- #secondary -->
	<?php endif; ?>

Twenty Twelveでは、ウィジェットを表示するために同じ関数「dynamic_sidebar( ‘sidebar-1’ )」を使用していますが、if条件式で使用せずにウィジェット表示用として利用しています。

その代わりにsidebar-1にウィジェットがあるか判定するのに、is_active_sidebar関数を使用していて、sidebar-1にウィジェットがあれば返り値Trueを返して、if文のコードを実行するのでウィジェットが表示されます。

無ければ返り値Falseを返すので、if文の中のコードが実行されずに終了しますので、その結果、サイドバーには何も表示されません。

スポンサーリンク

コメント

タイトルとURLをコピーしました