December 5, 2013
No Comments
Genesis has a pretty cool filter available to override the default settings for a widget area. You can use this to filter all of the widget area layouts:
function msdlab_register_sidebar_defaults($args){
$args = array(
'before_widget' => genesis_markup( array(
'html5' => '<section id="%1$s" class="widget %2$s">',
'xhtml' => '<div id="%1$s" class="widget %2$s">',
'echo' => false,
) ),
'after_widget' => genesis_markup( array(
'html5' => '</div></section>' . "\n",
'xhtml' => '</div></div>' . "\n",
'echo' => false
) ),
'before_title' => '<h4 class="widget-title widgettitle">',
'after_title' => genesis_markup( array(
'html5' => '</h4>'."\n".'<div class="widget-wrap">',
'xhtml' => '</h4>'."\n".'<div class="widget-wrap">',
'echo' => false,
) ),
);
return $args;
}
The issue comes when you try to activate it. Because the default widget areas are registered before the filter is defined, it won’t work unless you do something like so:
remove_action( 'genesis_setup', 'genesis_register_default_widget_areas' ); //remove initial setup of default widgets
add_action( 'after_setup_theme', 'genesis_register_default_widget_areas' ); //move them to AFTER the theme files are loaded
add_filter('genesis_register_sidebar_defaults','msdlab_register_sidebar_defaults'); //and here's the filter