无法调用特定的动态侧边栏

时间:2012-03-19 作者:WouterB

我创建了一个名为“Mountain”的提要栏。我可以通过Wordpress后端添加它,除了在分类页面上。在那里,我想通过替换以下内容对其进行硬编码:

<?php if (function_exists(\'dynamic_sidebar\') && dynamic_sidebar(\'post-widgets\')) : else : ?>
<?php endif;?>
使用

<?php if (function_exists(\'dynamic_sidebar\') && dynamic_sidebar(\'Mountain\')) : else : ?>
<?php endif; ?>

<?php get_sidebar("Mountain");?>
不知道为什么,但这是保留旧的侧边栏,并在我的内容底部添加“Mountain”侧边栏。

1 个回复
SO网友:Chip Bennett

首先,让我们确保术语清楚;在您的问题中,“侧边栏”有两种可能的含义:

Adynamic sidebar, i、 e.通过调用创建的小部件区域register_sidebar() 在里面functions.php, 并通过调用包含在模板中dynamic_sidebar().

  • Atemplate part, 致电viaget_sidebar( $slug ), 其标记在名为sidebar-$slug.php.
  • 这两者可以关联,但不必关联。例如,调用dynamic_sidebar() 可以但不必居住在sidebar-$slug.php 模板零件文件。

    让我们逐步了解这两种情况:

    动态侧栏“Mountain”因此,假设您的“Mountain”侧栏是一个小部件区域,您将有如下定义functions.php:

    <?php
    function wpse46048_register_dynamic_sidebars() {
        // Register "Mountain" Widget area
        register_sidebar( array( 
            \'name\' => \'Mountain\',
            \'id\' => \'mountain\',
            \'description\' => \'Mountain Widget area\',
            \'before_widget\' => \'<div id="%1$s" class="widget %2$s">\',
            \'after_widget\' => \'</div>\',
            \'before_title\' => \'<div class="title widgettitle">\',
            \'after_title\' => \'</div>\',
        ) );
    }
    add_action( \'widgets_init\', \'wpse46048_register_dynamic_sidebars\' );
    ?>
    
    。。。然后,在模板中的某个地方,您将调用以下任一项:

    <?php
    if ( ! dynamic_sidebar( \'mountain\' ) ) :
        // Default content output goes here
    endif;
    ?>
    
    。。。或者就是这样(如果您不想输出任何默认内容):

    <?php dynamic_sidebar( \'mountain\' ); ?>
    
    然后,您可以通过Dashboard -> Appearance -> Widgets, 将小部件拖放到“Mountain”小部件区域。

    模板部件侧栏“Mountain”假设您的“Mountain”侧栏是模板部件,您将首先在一个名为sidebar-mountain.php. 然后,您将通过以下方式将该模板零件文件包括在模板中:

    <?php get_sidebar( \'mountain\' ); ?>
    

    结束

    相关推荐

    Sidebar上5位不同作者的最新5篇帖子摘录

    我试图在我的博客侧栏中显示来自5位不同作者的最新5篇文章摘录。下面是我使用的代码,我从这个线程中调整了它:Find most recent authors到目前为止,我已经让它发挥了作用,但它并没有显示每个作者的最新帖子,而是显示了作者最早的帖子。你知道我做错了什么吗?我已经为此挣扎了几天了,所以非常感谢你能给我任何指导。我是PHP的新手,但能理解足够多的代码。谢谢您可以看到它在我的网站上工作:wearestd.com<?php global $wpdb; $post_ID