Install WordPress widgets to Sidebars Automatically

Here’s the code I used to automatically install three custom widgets to a new wordpress sidebar when a new wordpress theme is installed:

// widget code here

if(!get_option('dtbaker_done_installed_widgets',false)){
    $add_to_sidebar = 'sidebar-home';
    $widget_name = 'homepagewidget';
    $sidebar_options = get_option('sidebars_widgets');
    if(!isset($sidebar_options[$add_to_sidebar])){
        $sidebar_options[$add_to_sidebar] = array('_multiwidget'=>1);
    }
    $homepagewidget = get_option('widget_'.$widget_name);
    if(!is_array($homepagewidget))$homepagewidget = array();
    $count = count($homepagewidget)+1;
    // add first widget to sidebar:
    $sidebar_options[$add_to_sidebar][] = $widget_name.'-'.$count;
    $homepagewidget[$count] = array(
        'title' => 'Like this template?',
        'text' => 'Purchase this theme on ThemeForest here.',
        'link_page' => '',
        'link_url' => 'http://themeforest.net/?ref=dtbaker',
        'image' => 'wp-content/themes/world-wide-webdesign/images/icon_tag.png',
    );
    $count++;
    // add second widget to sidebar:
    $sidebar_options[$add_to_sidebar][] = $widget_name.'-'.$count;
    $homepagewidget[$count] = array(
        'title' => 'Testimonials',
        'text' => 'Nunc auctor bibendum eros. Dnahs Nunc auctor bibendum eros.',
        'link_page' => '',
        'link_url' => '',
        'image' => 'wp-content/themes/world-wide-webdesign/images/icon_chat.png',
    );
    $count++;
    // add third widget to sidebar:
    $sidebar_options[$add_to_sidebar][] = $widget_name.'-'.$count;
    $homepagewidget[$count] = array(
        'title' => 'Contact Us',
        'text' => 'Nunc auctor bibendum eros. Dnahs Nunc auctor bibendum eros.',
        'link_page' => '',
        'link_url' => '',
        'image' => 'wp-content/themes/world-wide-webdesign/images/icon_contact.png',
    );
    $count++;
    update_option('sidebars_widgets',$sidebar_options);
    update_option('widget_'.$widget_name,$homepagewidget);
    update_option('dtbaker_done_installed_widgets',true);
}

The result, 3 custom “home page” widgets on the right sidebar here: http://tf.dtbaker.com.au/template/www_wordpress/

Leave a Reply

Your email address will not be published. Required fields are marked *