1

这看起来简单明了——但事实并非如此。

我正在尝试在小部件输出的内部注册一个类。我使用的是 bootstrap 3,所以我必须panel-body在内部添加一个类,而整个小部件本身是用一个面板panel-default类包装的。

例子:

register_sidebar( 
        array( 
                'name' => __( 'Home Page (Beside Content)' , 'symbiostock' ),
                'id' => 'home-page-beside-content',
                'class'         => 'panel-body',
                'before_widget' => '<div class="panel panel-default home-beside-content"><aside id="%1$s" class="widget %2$s">',
                'after_widget' => '</aside></div>',
                'before_title' => '<div class="row panel-heading"><h3 class="featured-posts col-md-12">',
                'after_title' => '</h3></div>', ) );

有人会认为“class=>'something”会在小部件的内部注册一个类。但它没有出现。这是发生的事情:

<div class="panel panel-default home-beside-content">
   <aside class="widget widget_text" id="text-8">
      <div class="row panel-heading">
         <h3 class="featured-posts col-md-12">This is a test</h3>
      </div>
      <div class="textwidget">This is a test</div>
   </aside>
</div>

而我期待:

<div class="panel panel-default home-beside-content">
   <aside class="widget widget_text" id="text-8">
      <div class="row panel-heading">
         <h3 class="featured-posts col-md-12">This is a test</h3>
      </div>
      <div class="textwidget panel-body">This is a test</div>
   </aside>
</div>

注意“面板主体”添加。

我怎样才能解决这个问题?类嵌套的顺序很重要,因为我使用的是 bootstrap 3

http://getbootstrap.com/components/#panels

4

2 回答 2

1

我在我的主题的 footer.php 文件的末尾用 jQuery 解决了这个问题。

对于每个面板,您需要获取除panel-heading之外的子项,并将它们全部包裹在panel-body中。

<script>
jQuery('.panel').each(function(index, value) {
 jQuery(value).children().not('.panel-heading').wrapAll('<div class="panel-body"></div>');
});
</script>

注意:我使用了完整的单词JQuery,因为快捷方式$不可用。

于 2013-12-12T07:56:38.203 回答
0

是的,人们会这么认为,但 Wordpress 的做法往往与人们的想法完全相反!:-)

我以前遇到过这个问题。由于某些特殊原因,它不能那样工作。您需要使用一些技巧将小部件包装在该类中。就像是:

register_sidebar( 
    array( 
            'name' => __( 'Home Page (Beside Content)' , 'symbiostock' ),
            'id' => 'home-page-beside-content',
            'before_widget' => '<div class="panel panel-default home-beside-content"><aside id="%1$s" class="widget %2$s">',
            'after_widget' => '</div></aside></div>',
            'before_title' => '<div class="row panel-heading"><h3 class="featured-posts col-md-12">',
            'after_title' => '</h3></div><div class="panel-body">', ) );

请注意,您在“after_title”中启动新的 div,并在“after_widget”中关闭它。

于 2013-10-06T23:48:53.670 回答