我目前正在开发一个主题,该主题使用一个用于联系人、关于、公文包和主页的页面侧栏,以及一个用于博客页面的博客侧栏。
由于某些原因,页面侧边栏没有显示在其各自的页面上。我通过WordPress theme validator, 这给了我以下错误消息:
“侧栏需要在连接到widgets\\u init操作的自定义函数中注册。请参阅:register\\u sidebar()。”
以下是我用来注册和创建两个侧栏的代码,以供参考:
function wpt_create_widget( $name, $id, $description ) {
register_sidebar(array(
\'name\' => __( $name ),
\'id\' => $id,
\'description\' => __( $description ),
\'before_widget\' => \'<div class="widget">\',
\'after_widget\' => \'</div>\',
\'before_title\' => \'<h2 class="module-heading">\',
\'after_title\' => \'</h2>\'
));
}
wpt_create_widget( \'Page Sidebar\', \'page\', \'Displays on the side of pages with a sidebar\' );
wpt_create_widget( \'Blog Sidebar\', \'blog\', \'Displays on the side of pages in the blog section\' );
有谁能给我一些建议,告诉我应该关注哪些特定的PHP文件来纠正这个问题?我可能将其缩小到以下文件:
functions.php
page-sidebar-left.php
sidebar.php (Blog Sidebar)
sidebar-page.php (Page Sidebar)
SO网友:Nathan Powell
您遇到的错误是,您必须将已注册的侧栏添加到widgets_init
.
add_action( \'widgets_init\', \'wpa199335_page_sidebar\' );
function wpa199335_page_sidebar(){
register_sidebar(array(
\'name\' => __( \'Page Sidebar\'),
\'id\' => \'page\',
\'description\' => __( \'Displays on the side of pages with a sidebar\' ),
\'before_widget\' => \'<div class="widget">\',
\'after_widget\' => \'</div>\',
\'before_title\' => \'<h2 class="module-heading">\',
\'after_title\' => \'</h2>\'
));
}
这将只注册要将小部件放入其中的区域。要在页面上显示侧栏,您需要在模板文件或
functions.php
.
dynamic_sidebar( \'page\' );