Comment puis-je supprimer complètement la prise en charge des widgets d'un thème/plug-in?
Comme en supprimant l'apparence page des widgets et en empêchant WP de charger des classes de widgets et tout ce qui y est associé.
Une option serait simplement de vider le code du widget du fichier sidebar.php, ainsi que de l'en-tête/du pied de page/des pages de publication s'ils utilisent des widgets.
Cependant, jetez un coup d'œil à cet extrait de code (avec la permission de ce site ), que vous pouvez ajouter à votre fichier functions.php et qui va désactiver les widgets. Je pense que ce serait une approche plus propre si vous cherchez à changer de thème et si les widgets sont désactivés.
<?php
add_filter( ‘sidebars_widgets’, ‘disable_all_widgets’ );
function disable_all_widgets( $sidebars_widgets )
{
if ( is_home() ) $sidebars_widgets = array( false );
return $sidebars_widgets;
}
?>
Notez que cela ne désactivera que les widgets de votre page d'accueil. Vous devrez donc rechercher les conditions supplémentaires pour chaque page/publication/etc.
Si vous utilisez les fonctions internes de widgets.php
, c'est aussi simple que cela:
// final function makes most sense
// (useing stuff like `$GLOBALS['wp_widget_factory']` will do nothing better than this ex.)
// place inside your functions.php
unregister_widget( 'some widget' );
// if my search results are right, these should be the available default widgets
// from /wp-includes/widgets.php
Line 389: 'wp_widget_pages',
Line 390: 'wp_widget_pages_control',
Line 391: 'wp_widget_calendar',
Line 392: 'wp_widget_calendar_control',
Line 393: 'wp_widget_archives',
Line 394: 'wp_widget_archives_control',
Line 395: 'wp_widget_links',
Line 396: 'wp_widget_meta',
Line 397: 'wp_widget_meta_control',
Line 398: 'wp_widget_search',
Line 399: 'wp_widget_recent_entries',
Line 400: 'wp_widget_recent_entries_control',
Line 401: 'wp_widget_tag_cloud',
Line 402: 'wp_widget_tag_cloud_control',
Line 403: 'wp_widget_categories',
Line 404: 'wp_widget_categories_control',
Line 405: 'wp_widget_text',
Line 406: 'wp_widget_text_control',
Line 407: 'wp_widget_rss',
Line 408: 'wp_widget_rss_control',
Line 409: 'wp_widget_recent_comments',
Line 410: 'wp_widget_recent_comments_control'
remove_theme_support ('widgets') ne fonctionnera pas à cause de:
function remove_theme_support( $feature ) {
// Blacklist: for internal registrations not used directly by themes.
if ( in_array( $feature, array( 'editor-style', 'widgets', 'menus' ) ) )
return false;
return _remove_theme_support( $feature );
}
L'élément de menu "Widgets" est ajouté par wp_widgets_add_menu()
, appelé dans le crochet _admin_menu
, comme défini par wp_maybe_load_widgets()
. Vous pouvez désactiver ceci en le décrochant de _admin_menu
ou en renvoyant false pour load_default_widgets
.
Vous pouvez également annuler l’enregistrement de toutes les barres latérales comme suggéré par Bainternet et remove_theme_support( 'widgets' )
.