Is this expected behaviour?
Yes, it is expected behavior. The genesis_register_sidebar()
function is just a call to register_sidebar()
with a few predefined defaults for $args
and a filter named 'genesis_register_sidebar_defaults'
:
function genesis_register_sidebar( $args ) {
$defaults = (array) apply_filters(
'genesis_register_sidebar_defaults',
array(
'before_widget' => '<div id="%1$s" class="widget %2$s"><div class="widget-wrap">',
'after_widget' => "</div></div>\n",
'before_title' => '<h4 class="widgettitle">',
'after_title' => "</h4>\n",
)
);
$args = wp_parse_args( $args, $defaults );
return register_sidebar( $args );
}
Since the front-page.php
child theme file is not (normally) run during an admin page load, the widget is not registered and will not appear in the Active Widgets area. As you correctly surmised in the comments, placing the call to genesis_register_sidebar()
in the functions.php child theme file registers the widget when admin pages are loaded.