What I am trying to do is pre-populate the sidebar widget area with some default widgets on theme activation.
if ( ! dynamic_sidebar( 'sidebar' ) ) :
does add the widgets but it doesnot show up in the sidebar of widgets section and
if ( is_active_sidebar( 'sidebar' ) ) {
this function doesnot work if the widgets are not loaded in the sidebar widgetized area.
I know it is possible but I am just out of idea. I googled but didnot find any solutions. Thank you for any help in advance.
It isn’t clear from your answer if you use the
after_switch_theme
hook but that the moment you need to set the widgets.To activate the widgets I suggest writing it directly into the database with
get_option('sidebars_widgets')
which should give an array, and save it withupdate_option('sidebars_widgets', $new_activated_widgets)
.This should help you get started.
Tested, just paste it in
functions.php
of your theme.If anyone else needed to know how to add multiple default widgets (different instances) to multiple sidebars at the same time, the following code will add the widgets both to the page and under the admin widget tab. I realize that this may have been obvious to everyone but me.
So based on janw and kcssm’s hard work:
This will however delete any other settings, so tread carefully!