微件面板不显示在主题定制器中

时间:2015-12-15 作者:Kaspar Lee

我使用主题定制器让用户自定义他们的网站外观。

我注意到在“215”主题中有一个小部件面板。我在很多其他主题上也看到了这一点,并且面板的代码还没有添加到customizer.php (据我所知)

关于我的主题,我在主页上有几个侧边栏。您可以通过Appearance > Widgets 菜单,但不显示自定义程序中的小部件面板。

我如何才能让它显示在定制器中,这样用户就不必不断切换以更改小部件?

我的侧栏注册代码:

function widgets_init_mysite() {
    register_sidebar( array(
        \'name\' => __( \'Main Sidebar\', \'mytheme\' ),
        \'id\' => \'sidebar-1\',
        \'before_widget\' => \'<div>\',
        \'after_widget\' => \'</div>\',
        \'before_title\' => \'<h3 class="widget-title">\',
        \'after_title\' => \'</h3>\',
    ) );
}

add_action( \'widgets_init\', \'widgets_init_mysite\' );
我使用以下命令将侧栏添加到页面中dynamic_sidebar( \'sidebar-1\' )

它肯定会显示出来,因为我通过Appearance > Widgets 我可以在定制器中看到它们。

Note: 我确实发现了一件有趣的事。我注册了5个边栏,ID为sidebar-1, sidebar-2 在Firefix中,我访问了主题定制器并检查元素。我发现Widgets面板存在,但display: none. 更有趣的是ul 分导航,共有5个li 类的元素section-sidebar-widgets-sidebar-1 (所有侧栏的最后一个数字都已更改)。

我检查了我做的其他部分,课程总是从section-, 然后是分区ID。我尝试将侧栏的面板更改为我的面板,如下所示:

$wp_customize->get_section( \'sidebar-widgets-sidebar-1\' )->panel = \'my-panel\';

但什么都没发生。这很奇怪,因为我知道几乎肯定知道侧边栏部分的名称,但更改它们的面板并没有任何作用。。。

2 个回复
SO网友:Jentan Bernardus

我知道你在说dynamic_sidebar 函数,但我没有看到您提到侧边栏文件(例如。sidebar.phpsidebar-single.php).

显示侧栏小部件基本上有3个步骤,它们在customizer中始终可见。如果你没有出现,你可能错过了什么。

1. The register part in functions.php

<人力资源>
$args = array(
    \'name\'          => __( \'Main Sidebar\', \'mytheme\' ),
    \'id\'            => \'sidebar-1\',
    \'before_widget\' => \'<div id="%1$s" class="widget %2$s">\',
    \'after_widget\'  => \'</div>\',
    \'before_title\'  => \'<h3 class="widget-title">\',
    \'after_title\'   => \'</h3>\'
);
register_sidebar( $args );

2. The function call in a sidebar file (eg. sidebar.php or sidebar-single.php)

<人力资源>
<?php
// Dynamic Sidebar
if ( !function_exists(\'dynamic_sidebar\') || !dynamic_sidebar(\'sidebar-1\') ) :
    // Sidebar fallback content
    get_sidebar();
endif;
// End Dynamic Sidebar Single posts
?>

3. Call the sidebar in the post/page template

<人力资源><?php get_sidebar(); ?><?php get_sidebar(\'single\'); ?> 对于sidebar-single.php

我建议您重新检查代码,确保没有遗漏任何内容。祝你一切顺利!

SO网友:Mark Kaplun

最有可能的情况是,当costumizer处于活动状态时,您没有显示侧栏,这会阻止costumizer在页面上检测到它的存在。

costumizer通过挂接与边栏相关的各种挂钩来检测边栏,这些挂钩应该在生成页面时触发。如果由于某种原因,您的边栏显示代码没有触发挂钩,那么即使显示实际内容,costumizer也不会知道它在那里。例如,如果缓存侧栏而不是调用dynamic_display 您只需输出侧栏。

相关推荐