我有一个wordpress网站在完成一半时交给了我。我上次使用wordpress至少有一年了,我发现有很多不同之处。我习惯于在不同页面上显示不同内容的方式是为每个需要独特内容的页面创建页面模板。
我试图在一个特定页面上显示与网站其他页面不同的侧边栏。一年前我会做的是为这个页面创建一个页面模板,创建一个新的边栏文件,然后在页面模板中包含边栏文件。我发现这行不通。我能看到的罪魁祸首是loop.php
&;loop-page.php
, 这在我很久以前构建网站时通常使用的精简主题中是不存在的。然而,似乎在我之前接触过这件事的人都复制了“二十”主题,并以新的名称对其进行了修改。
我在主题的functions.php
我可以在仪表板的Widgets部分看到它,并向其中添加Widgets。
但是,看在上帝的份上,我不能让它显示在我想要的页面上。我尝试了以下方法:
1)为页面提供自定义模板template_news.php
并将以下内容放置在应调用侧栏的位置:
include (\'sidebar-news.php\');
The
sidebar-news.php
包含我从中复制的代码的文件
sidebar.php
使用我在中列出的“新闻”侧栏id
functions.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
似乎什么都没做。
请有人告诉我如何将这个侧边栏添加到页面中。
最合适的回答,由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
声明。