Attivazione Predefinita dei Widget nello Sviluppo di Temi Personalizzati
Nello sviluppo di temi per WordPress, se una sidebar non è attiva, posso attivarla? Inoltre, se la sidebar è attiva ma non contiene widget, posso aggiungerne alcuni?
Sono uno sviluppatore di temi e plugin, ma questa è una cosa che non ho ancora imparato a fare.

@Volomike,
Quando registri una sidebar nelle funzioni del tuo tema, sarà attiva nella dashboard. Se nessun widget viene aggiunto alle tue sidebar, WordPress aggiungerà i widget predefiniti. Puoi impedire a WordPress di aggiungere i widget predefiniti deregistrandoli:
// Rimuovi i Widget predefiniti di WP
// Funzione per WP 2.8 che utilizza $widget_class
if (function_exists('unregister_widget')) {
unregister_widget('WP_Widget_Meta');
unregister_widget('WP_Widget_Search');
unregister_widget('');
// Funzione per versioni precedenti a WP 2.8 che utilizza $id
} else {
unregister_widget_control('meta');
unregister_widget_control('search');
}
Puoi anche preimpostare i tuoi widget.
// Il seguente codice è tratto da The Thematic Theme, con licenza GPLv2
register_sidebar_widget(__('Cerca', 'thematic'), 'widget_thematic_search', null, 'search');
unregister_widget_control('search');
register_sidebar_widget(__('Meta', 'thematic'), 'widget_thematic_meta', null, 'meta');
unregister_widget_control('meta');
register_sidebar_widget(array(__('Link RSS', 'thematic'), 'widgets'), 'widget_thematic_rsslinks');
register_widget_control(array(__('Link RSS', 'thematic'), 'widgets'), 'widget_thematic_rsslinks_control', 300, 90);
// Widget preimpostati
$preset_widgets = array (
'primary-aside' => array( 'search', 'pages', 'categories', 'archives' ),
'secondary-aside' => array( 'links', 'rss-links', 'meta' )
);
if ( isset( $_GET['activated'] ) ) {
update_option( 'sidebars_widgets', apply_filters('thematic_preset_widgets',$preset_widgets ));
}
Thematic è in realtà un ottimo esempio di tutto ciò che può essere fatto con i widget. Dai un'occhiata a widgets.php e widgets-extensions.php

Thematic può essere un po' grezzo e ignorare completamente molte funzionalità integrate di WordPress. Questo potrebbe essere per compatibilità con le versioni precedenti, ma prima o poi bisogna tagliare il cordone. Invece di controllare $_GET['activated'], utilizza l'API integrata e usa l'azione switch_theme
per testare i widget installati e apportare le modifiche necessarie.

La soluzione finale è qui: http://wordpress.stackexchange.com/questions/16603/enabling-default-widgets-in-a-custom-theme
