在二十四年内修复侧边栏重叠

时间:2011-07-07 13:28:43

标签: wordpress overlap sidebar

我正在创建一个新的页面模板,其中包含基于二十五岁的子主题中的侧边栏。 由于这在二十二的函数中没有正确显示.php:

function twentyeleven_body_classes( $classes ) {

if ( ! is_multi_author() ) {
    $classes[] = 'single-author';
}

if ( is_singular() && ! is_home() && ! is_page_template( 'showcase.php' ) && ! is_page_template( 'sidebar-page.php' ) )
    $classes[] = 'singular';

return $classes;
}
add_filter( 'body_class', 'twentyeleven_body_classes' );

它将“单数”类添加到除默认sidebar-page.php之外的任何模板上的body标签,这会导致侧边栏重叠。

我无法使用functions.php修复此问题,因为子主题functions.php是在父主题之前加载的(所以我不能只通过$ classes数组并删除“singular”元素)。 我不想编辑父级的functions.php,因为这会在更新期间被覆盖,这首先会破坏使用子主题的整个过程。

有什么想法吗?

编辑: 似乎我可以使用after_setup_theme动作钩子在父亲的function.php之后运行它。

现在我遇到了错误。

我的代码是:

add_action( 'after_setup_theme', 'childtheme_override' );

function childtheme_override() {
    add_filter('body_class', 'twentyeleven_child_body_classes');
}

function twentyeleven_child_body_classes ($classes) {
    if ( is_page_template('container-sidebar-page.php') ) {
        foreach ($classes as $key => $value) {
        if ($value == 'singular') {
                 unset($classes[$key]);
                 $classes = array_values($classes);
            }
    }
    return $classes;
}

1 个答案:

答案 0 :(得分:-1)

想出来:通过执行remove_filter修复,只需复制父级的body_classes并将模板添加到不应该具有“单数”类的列表中。

错误如下:

Warning: array_merge() [function.array-merge]: Argument #1 is not an array in C:\wamp\www\wp-content\themes\twentyeleven\inc\theme-options.php on line 40


Warning: join() [function.join]: Invalid arguments passed in C:\wamp\www\wp-includes\post-template.php on line 390