web-dev-qa-db-fra.com

Désactiver complètement les widgets

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é.

2
onetrickpony

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.

4
Dillie-O

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'
3
kaiser

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 );
}
2
theck

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' ).

1
Jan Fabry