在特定页面上显示特定的动态侧栏小部件

时间:2011-09-16 作者:biggles

我有一个wordpress网站在完成一半时交给了我。我上次使用wordpress至少有一年了,我发现有很多不同之处。我习惯于在不同页面上显示不同内容的方式是为每个需要独特内容的页面创建页面模板。

我试图在一个特定页面上显示与网站其他页面不同的侧边栏。一年前我会做的是为这个页面创建一个页面模板,创建一个新的边栏文件,然后在页面模板中包含边栏文件。我发现这行不通。我能看到的罪魁祸首是loop.php &;loop-page.php, 这在我很久以前构建网站时通常使用的精简主题中是不存在的。然而,似乎在我之前接触过这件事的人都复制了“二十”主题,并以新的名称对其进行了修改。

我在主题的functions.php 我可以在仪表板的Widgets部分看到它,并向其中添加Widgets。

但是,看在上帝的份上,我不能让它显示在我想要的页面上。我尝试了以下方法:

1)为页面提供自定义模板template_news.php 并将以下内容放置在应调用侧栏的位置:

include (\'sidebar-news.php\');
Thesidebar-news.php 包含我从中复制的代码的文件sidebar.php 使用我在中列出的“新闻”侧栏idfunctions.php:

<?php if ( is_active_sidebar( \'sidebar-news\' ) ) : ?>

<div id="secondary" class="widget-area" role="complementary">
    <ul class="xoxo">
        <?php dynamic_sidebar( \'sidebar-news\' ); ?>
    </ul>
</div>

<?php endif; ?>
页面模板应用于正确的页面。

2)进入page.php 并更改:

<?php get_sidebar(); ?>
收件人:

<?php 

if(is_page(\'18\')) {
   include (\'sidebar-news.php\');
}
else {              
   get_sidebar(); 
} ?>
我还检查了几次,以确保页面ID正确,并尝试使用slug名称,但都没有用。

3)在中尝试了上一个loop-page.php

4.)将以下条件语句放入sidebar.php:

<?php
if ( is_active_sidebar( \'sidebar-news\' ) && is_page(\'18\') ) : ?>
    <div id="sidebarnews" class="widget-area" role="complementary">
    <ul class="xoxo">
    <?php dynamic_sidebar( \'sidebar-news\' ); ?>
    </ul>
    </div>
<?php endif; ?>
另外,在做了一些研究并发现扩展或更改主题功能的正确方法是创建子主题之后,我尝试了这样做,但它导致了一些我没有时间尝试解决的问题。

我发现默认的“侧栏”。php `正在被调用并显示在页面上,然而,即使存在我的带有页面ID的条件语句,它也不会显示自定义侧栏小部件。

我似乎也找不到如何在页面上调用默认侧栏,因为删除get_sidebar(); 在我的自定义模板上template_news.php , page.php , 或loop-page.php 似乎什么都没做。

请有人告诉我如何将这个侧边栏添加到页面中。

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

我想你可能只需要跑register_sidebar()\'widgets_init\' 钩二十世纪十年代的主题有以下几个例子:register_sidebar() 在its中functions.php 文件,但它可能是这样的:

add_action( \'widgets_init\', \'twentyten_widgets_init\' );
function twentyten_widgets_init() {
  register_sidebar( array(
    \'name\' => __( \'News Sidebar\', \'yoursite\' ),
    \'id\' => \'sidebar-news\',
    \'description\' => __( \'The News Sidebar Area\', \'yoursite\' ),
    \'before_widget\' => \'<li id="%1$s" class="widget-container %2$s">\',
    \'after_widget\' => \'</li>\',
    \'before_title\' => \'<h3 class="widget-title">\',
    \'after_title\' => \'</h3>\',
  ));

  /*
   * THE REST OF THE SIDEBAR REGISTRATION CODE FROM twentyten_widgets_init() GOES HERE
   */
}
此外,在您的template_news.php 页面模板使用以下代码调用侧栏,侧栏将加载sidebar-news.php 您在上面创建的文件:

<?php get_sidebar( \'news\' ); ?> 
你不应该需要任何其他你尝试过的东西,而且绝对不需要include 声明。

SO网友:Sébastien Méric

要仅在所有页面都具有相同侧栏的特定页面上显示小部件,可以使用以下插件之一:

Display Widgets

只需在指定页面上隐藏小部件。向每个小部件添加复选框,以在每个网站页面上显示或隐藏它。

Widget Logic

小部件逻辑允许您使用WP的条件标记控制小部件显示在哪些页面上。它还添加了“widget\\u content”过滤器。

结束

相关推荐

wordpress wp_list_pages help

在我的wordpress环境中,我有很多页面,还有一个自定义的帖子类型,叫做CaseStury。我已经设置了一个页面客户端。php上有一些自己的内容,然后我使用query_posts() 函数可使用post类型案例研究拉入所有post。查看单个案例研究时,我想显示nav,该nav需要包含指向页面、客户和案例研究的链接,在案例研究下面,我想添加所有自定义帖子类型“案例研究”的帖子,目前为止,我有以下内容:,<?php wp_list_pages(array(\'include\' => \'15