我认为widget类没有任何问题。您遇到的问题是,您在sidebar.php
:
<aside id="secondary" class="widget-area col-sm-12 col-md-12 col-lg-12" role="complementary">
<div class="col-lg-6 col-md-12">
<?php dynamic_sidebar( \'main-widget\' ); // this will display all the widgets in your main-widget sidebar ?>
</div>
<div class="col-lg-6 col-md-12">
<?php dynamic_sidebar( \'main-widget\' ); // this will display again all the widgets in your main-widget sidebar ?>
</div>
</aside><!-- #secondary -->
每个侧边栏显示中的第二个小部件可能由于一些CSS而被隐藏,但我打赌它在那里,两次,一次在左边,一次在右边。
所以,不要打电话dynamic_sidebar( \'main-widget\' );
两次
据我所知,您希望将小部件包装在某些div中,以便将它们放在两列中。为此,您需要过滤before-widget
和after-widget
通过dynamic_sidebar_params
滤器或者,更好的是,您可以使用一些CSS来实现这个技巧。
下面是一段起始PHP代码,它将为目标小部件区域中的每个小部件添加包装器:
/**
* @param array $params
*/
function sole_add_widget_columns_wrapper( $params ) {
// Add the opening wrapper tag
$params[0][\'before_widget\'] = PHP_EOL . \'<div class="col-lg-6 col-md-12">\' . PHP_EOL . $params[0][\'before_widget\'];
// Add the closing wrapper tag
$params[0][\'after_widget\'] = $params[0][\'after_widget\'] . PHP_EOL . \'</div><!-- close wrapper -->\' . PHP_EOL;
}
/**
* @param string $index
*/
function sole_handle_main_widget_area_columns( $index ) {
// We only want to deal with the main widget area
if ( \'main-widget\' !== $index ) {
return;
}
// Filter each widget params and add the wrappers
add_filter( \'dynamic_sidebar_params\', \'sole_add_widget_columns_wrapper\', 10, 1 );
// Hook an action to remove the filter above after we are done with this widget area.
// This way we don\'t affect other widget area that may come, on the same page, after this one.
add_action( \'dynamic_sidebar_after\', \'sole_remove_main_widget_area_columns_filter\', 10 );
}
add_action( \'dynamic_sidebar_before\', \'sole_handle_main_widget_area_columns\', 10 );
function sole_remove_main_widget_area_columns_filter() {
remove_filter( \'dynamic_sidebar_params\', \'sole_add_widget_columns_wrapper\', 10 );
}
此代码将包装每个小部件,它不会将偶数和奇数小部件放入两列包装器中。