私はそれらのサイドバーに異なるウィジェットが欲しいと思うように、そのページ(そして投稿も)がホームページと非常に異なるテーマを開発しています。
それをする方法はありますか?
私は single.php のサイドバーを index.php のように呼び出しています。
<?php get_sidebar(); ?>
sidebar.php は次のようになります。
<?php
/**
* The Sidebar containing the primary and secondary widget areas.
?>
<aside>
<ul>
<?php
/* When we call the dynamic_sidebar() function, it'll spit out
* the widgets for that widget area. If it instead returns false,
* then the sidebar simply doesn't exist, so we'll hard-code in
* some default sidebar stuff just in case.
*/
if ( ! dynamic_sidebar( 'primary-widget-area' ) ) : ?>
<?php endif; // end primary widget area ?>
</ul>
<?php
// A second sidebar for widgets, just because.
if ( is_active_sidebar( 'secondary-widget-area' ) ) : ?>
<ul>
<?php dynamic_sidebar( 'secondary-widget-area' ); ?>
</ul>
<?php endif; ?>
</aside>
条件付きタグ を使用して、特定の条件が満たされた場合にのみコンテンツを表示します。
あなたの場合は、おそらく is_front_page()
を使用することになるでしょう。
<aside>
<ul>
<?php
if ( function_exists( 'dynamic_sidebar' ) ) {
if ( is_front_page() ) {
if ( ! dynamic_sidebar( 'frontpage-widget-area' ) ) {
echo '<li>No sidebars for the frontpage.</li>'; // some default output
}
} else {
if ( ! dynamic_sidebar( 'primary-widget-area' ) ) {
echo '<li>No sidebars for posts/pages.</li>'; // some default output
}
}
} else {
echo '<li>Sidebars disabled.</li>'; // some default output
}
?>
</ul>
</aside>
これは、2つのウィジェット領域が事前に register_sidebar()
によって正しく登録されていることを前提としています。