十二个小工具占据空间

时间:2014-09-10 作者:John Robertson

我使用的是“二十一二”主题,在这个主题中,我使用了Main Sidebar 用于小部件。我使用下面的代码使小部件在我的homepage ( front page ). 代码可以工作,但是小部件区域仍然占据了空间。如何扩展内容以填充整个宽度?

<?php If ( !is_front_page ) { get_sidebar() } ?>
在应用代码之前,小部件仍然可见,请参见下图:

The Image Before the code

应用上面的代码后,它会删除小部件,但小部件仍在占用空间。

After Applying the Code

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

您的问题中有一些令人困惑的信息,一些重要信息缺失

您是否按照代码中的建议设置了静态首页

您需要在首页或主页上实现这一点吗

你为什么不使用头版。若您已经设置了静态首页,那个么包含的php模板实际上正是您所需要的。主边栏从该模板中删除,除两个首页边栏外,其工作方式与全宽页面模板完全相同,但这些边栏不应干扰您需要实现的内容编辑要创建静态首页,请阅读本文以了解更多信息:Creating a Static Front Page

如果您需要在主页上显示此信息,或者需要更改页面。php,这将是一项非常令人不快和沮丧的工作。我可以帮你一些提示和小代码,但不是完整的代码,这是一个相当代码密集的修改

看看functions.php, lines 407 to 455. 二十一使用自定义主体类添加full-width 车身等级达到全宽。php模板,最重要的是no 活动侧栏

if ( ! is_active_sidebar( \'sidebar-1\' ) || is_page_template( \'page-templates/full-width.php\' ) )
    $classes[] = \'full-width\';
让我们使用索引。以php为例。如果将小部件添加到主侧栏(sidebar-1), 它将出现在网站的所有页面上。由于侧栏附带了一个小部件,侧栏的状态将是活动的。

The following happens:

  • ! is_active_sidebar( \'sidebar-1\' ) 退货false,

  • is_page_template( \'page-templates/full-width.php\' ) 返回false

    由于这两条语句都返回false,因此条件无法执行,因此full-width 未应用类

What this means

<即使您删除了对侧栏的调用或有条件地调用侧栏,它也只会删除侧栏内容,但仍会保留空白,如您的问题所示。即使特定页面没有调用侧栏,侧栏仍然具有活动状态,这是因为它附加了小部件

THE LET DOWN - FLAW

这个twentytwelve_body_class 函数是不可插入的,所以不能简单地用子主题覆盖它。也没有提供过滤器,因此可以过滤和修改body类的行为。

SOLVING THE PROBLEM

请注意:所有这些更改MUST 在子主题中完成,切勿更改原始主题。我以主页(index.php)为例,根据需要进行更改

METHOD 1

可能不是最好的解决方案。从索引中删除对侧栏的调用。php(如果您还没有这样做,只需将th index.php复制到您的子主题并删除侧栏调用)。现在,取消设置原始full-width 类并注册一个新类,然后调用它new-full-width. 这样就可以了(注意:这需要进入您的子teme函数。php)

function wpse_alter_body_classes($classes) {
    foreach($classes as $key => $value) {
        if ($value == \'full-width\') {
            unset($classes[$key]);
        }
    }

    if ( ! is_active_sidebar( \'sidebar-1\' ) || is_home() || is_page_template( \'page-templates/full-width.php\' ) ) {
        $classes[] = \'new-full-width\';
    }

    return $classes;
}

add_filter(\'body_class\', \'wpse_alter_body_classes\', 20, 2);
现在需要查找full-width 以十二种风格。css,将它们复制到您的子主题,并将它们全部更改为new-full-width

METHOD 2

比方法1更好的选择。只需为主页注册一个新的特殊body类(比如home类)。(注意:这需要进入您的子teme函数。php)

function wpse_alter_body_classes($classes) {

    if ( is_home() ) {
        $classes[] = \'home-class\';
    }

    return $classes;
}

add_filter(\'body_class\', \'wpse_alter_body_classes\', 20, 2);
再次复制的所有实例full-width 从样式。你的孩子主题的十二岁css。重命名的所有实例full-widthhome-class

METHOD 3

如果你真的很有冒险精神,那么就选择“二十一二”主题,将其重命名,并使用自己的自定义设置创建自己的新独立主题

METHOD 4

这是迄今为止最简单的。重新考虑并重新规划整个设置,以符合主题的限制。

TO CLOSE THE ANSWER

记住图像及其添加和显示方式非常重要。您可能还需要查看has-post-thumbnail 类,该类在首页时定义。使用php模板。请记住,始终使用全尺寸上传图像,不要使用其他三种标准尺寸

SO网友:Domain

您可以编写一个插件来删除小部件并释放空间。在一个新插件中写入此内容。

<?php
function remove_some_widgets(){
unregister_sidebar( \'sidebar-1\' );
unregister_sidebar( \'sidebar-2\' );
unregister_sidebar( \'sidebar-3\' );
}
add_action( \'widgets_init\', \'remove_some_widgets\', 11 );
?>
其中“侧边栏-1”代表主侧边栏。

结束

相关推荐

Multiple widgets in wordpress

我已经创建了一个wordpress小部件。它在小部件选项中有一个下拉列表。下拉列表包含“facebook”和“twitter”。如果管理员选择“twitter”,那么twitter关注者计数将显示在小部件中,与facebook的情况类似。使用jquery,该计数显示在id为“social count”的div中。当页面加载时,jquery ajax将获取计数并将其插入到“社交计数”中。问题是它在单个实例中运行良好。但是,如果在侧栏中添加了2个实例,则在这两个实例中都会显示最新的计数,因为我使用的是$(“.