WordPressでサイトを構築しています。複数のサブページがあり、その多くは異なるサイドバーを必要とします。それで、私はウィジェット化されたテーマを持っています、そしてまた私はいくつかのサイドバーウィジェットを作成しました。
異なるページに異なるサイドバーを表示するための条件付きステートメントを書きました。ただし、条件付きステートメントにかかわらず、ウィジェット化された1つのサイドバーがほぼすべてのページに表示されます。
目的のページに表示されているサイドバーはここで見ることができます: http://www.africanhealthleadership.org/about/approach/
別のサイドバーを表示する必要があるサブページは、Knowledge Resources> Researchの下にあります。
コードは以下の通りです。私は全体のPHPの話題なので、おそらくばかげたことをしました。 dynamic_sidebar(2)を一重引用符で囲みましたが、うまくいきませんでした。
助けてくれてありがとう。
<?php
if ( is_subpage('approach') ) {
if (!function_exists ( dynamic_sidebar(1) ) ) ;
}
elseif ( is_subpage('research')) {
if (!function_exists( dynamic_sidebar(2)) || !dynamic_sidebar( "Sidebar2") );
}
?>
より簡単でエレガント(メンテナンス性)
<?php
// Your sidebar should have the wp_meta action hook
wp_meta();
// in ex. your functions.php
function my_sidebar_content() {
// "About" Page
if ( is_page('about') ) {
// If some widget is added via Admin > Design > Widgets
if ( is_active_sidebar( 'widgets-sidebar-default' ) ) {
// Display Widgets
dynamic_sidebar( 'widgets-sidebar-default' );
}
// Default Content before Widgets were added
else {
_e('default static content', TEXTDOMAIN);
}
}
// "Links" Page
elseif ( is_page('links') ) {
if ( is_active_sidebar( 'widgets-sidebar-links' ) ) {
dynamic_sidebar( 'widgets-sidebar-links' );
}
else {
_e('default static content', TEXTDOMAIN);
}
}
}
add_action( 'wp_meta', 'my_sidebar_content', 10 );
# ===================================================
// OR:
wp_meta();
// functions.php
function load_my_sidebars() {
// "About" Page
if ( is_page('about') ) {
get_template_part( 'sidebar_content', 'default' );
}
// "Links" Page
elseif ( is_page('links') ) {
get_template_part( 'sidebar_content', 'links' );
}
}
add_action( 'wp_meta', 'load_my_sidebars', 10 );
// in sidebar_content-default.php
// If some widget is added via Admin > Design > Widgets
// You can add any static content right here before the widgets
if ( is_active_sidebar( 'widgets-sidebar-default' ) ) {
// Display Widgets
dynamic_sidebar( 'widgets-sidebar-default' );
}
// Default Content before Widgets were added
else {
_e('default static content', TEXTDOMAIN);
}
// You can add any static content right here after the widgets
// in sidebar_content-links.php
if ( is_active_sidebar( 'widgets-sidebar-links' ) ) {
dynamic_sidebar( 'widgets-sidebar-links' );
}
else {
_e('default static content', TEXTDOMAIN);
}
?>
dynamic_sidebar
が存在するかどうかを誰かが確認する理由がわかりません。現在9つのメジャーリリースがあります。私は本当にあなたが2.1以下のために開発していないことを願っています。これを試して:
if( is_page('approach') )
dynamic_sidebar(1);
elseif( is_page('research') )
dynamic_sidebar(2);
あなたが使いたい特定のページを知っているならば、そのサブページのがらくたを気にしないでください。その上、この関数はあなたが一般的にサブページにいるかどうかをチェックするだけですが、特定のサブページにいるかどうかはわかりません。
あなたはただ "Widget Logic"拡張を使うことができるので、サイドバーのカスタムウィジェットのためのサポートを実際のテンプレートに書く必要はありません。