可以在其中更改容器的小部件

时间:2013-03-15 作者:bayuah

是否可以创建一个小部件来更改容器?

例如:

    <!--- widget-container --->
    <div class="wdget">
       <div class="textwidget">
         <!--TOPWIDGET-->
         <div style="clear:both;"></div> <!--- <=== See this =--->
         <!--/TOPWIDGET-->
      </div>
    </div>
    <!--- /widget-container --->
像这样:

    <!--- widget-container --->
         <div style="clear:both;"></div> <!--- <=== See this =--->
    <div class="wdget">
       <div class="textwidget">
      </div>
    </div>
    <!--- /widget-container --->
或者其他类似的东西。

如果我使用此选项:

    register_sidebar(
       array(
          \'before_widget\' => "<div style=\\"clear:both;\\">"
                            ."</div><div id=\\"%1$s\\" class=\\"widget %2$s\\">",
          \'after_widget\' => "</div>"
       )
    );
将替换所有小部件,而不仅仅是我想要的小部件。

我的主要目标是<div style="clear:both;"></div> 小部件中的元素,我可以将其视为小部件,因此它很容易移动。

1 个回复
最合适的回答,由SO网友:chrisguitarguy 整理而成

我不建议这样做。更容易使用clearfix hack 强制清除并将该样式添加到您的小部件。Clearfix攻击是透明的:如果它们发生在所有元素上,则没有明显的区别,除了清除浮动。

在你的主题中的某个地方style.css:

.widget:before,
.widget:after {
    content: " ";
    display: table;
}

.widget:after {
    clear: both;
}

.widget {
    *zoom: 1;
}
当然,你可以把它放在任何地方。你可以wp_headwp_footer 并为其弹出一个自定义样式标记。或者你可以更具体一些。例如,如果您正在注册一个自定义小部件,您可以添加一个clearfix hack,特别是通过classname。

或者,如果您真的只想向某个小部件添加一个clear div,您可以挂接到dynamic_sidebar_params. 挂钩函数将接收一个参数:一个边栏参数数组,包括before_widgetafter_widgetwidget_name 这将是您传递给的第二个参数parent::__construct 当你register the widget. 类似这样:

<?php
add_filter(\'dynamic_sidebar_params\', \'wpse90953_sidebar_params\');
function wpse90953_sidebar_params($widget_params)
{
    if (!empty($widget_params[\'widget_name\']) && \'your_widget_name\' === $widget_params[\'widget_name\']) {
        $widget_params[\'before_widget\'] = \'<div style="clear:both"></div>\' . $widget_params[\'before_widget\'];
    }

    return $widget_params;
}

结束