多个子页上的动态侧边栏

时间:2010-09-30 作者:Jeff Tancil

我正在WordPress中建立一个站点。它有多个子页面,其中许多需要不同的边栏。因此,我有一个widgetized主题,并且还创建了一些侧栏小部件。

我写了一个条件语句,在不同的页面上显示不同的侧栏。然而,尽管有条件语句,但几乎所有页面上都会显示一个widgetized提要栏。

此处可以看到所需页面上出现的侧栏:http://www.africanhealthleadership.org/about/approach/

应该有不同侧栏的子页面位于“知识资源”>“研究”下

代码如下。我完全是个PHP高手,所以我可能做了一些愚蠢的事情。我尝试过在dynamic\\u提要栏(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") );
    }
?>

3 个回复
最合适的回答,由SO网友:kaiser 整理而成

更简单(&A);优雅(更高的可维护性):

<?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);
    }
?>

SO网友:John P Bloch

我不知道为什么有人检查dynamic_sidebar 存在。现在已经发布了9个主要版本。我真的希望您不是在为2.1或更低版本开发。试试这个:

if( is_page(\'approach\') )
  dynamic_sidebar(1);
elseif( is_page(\'research\') )
  dynamic_sidebar(2);
如果你知道你想使用的特定页面,就不要为那些子页面垃圾而烦恼。此外,该函数通常只检查您是否在子页面上,但它不会告诉您是否在特定子页面上。

SO网友:rasjani

您可以只使用“小部件逻辑”扩展,这样就不需要将侧栏中的自定义小部件写入到实际模板中。

结束

相关推荐

Sidebar slideshow widget

有人知道可以放在边栏上的高质量图像幻灯片小部件吗?