web-dev-qa-db-ja.com

ウィジェットを完全に無効にする

テーマ/プラグインからウィジェットのサポートを完全に削除するにはどうすればいいですか?

外観 - >ウィジェットページを削除し、WPがウィジェットクラスやウィジェット関連のものをロードしないようにします。

2
onetrickpony

1つの選択肢は、sidebar.phpファイルからウィジェットコードを単純にフラッシュすることです。ウィジェットを使用している場合は、ヘッダー/フッター/投稿ページも同様です。

しかし、このコードスニペット( this site の好意による)を覗いてみてください。これはfunctions.phpファイルに追加することができ、ウィジェットを無効にすることができます。テーマを変更して、ウィジェットを無効にしたい場合は、これがよりクリーンなアプローチになると思います。

<?php 
   add_filter( ‘sidebars_widgets’, ‘disable_all_widgets’ ); 
   function disable_all_widgets( $sidebars_widgets ) 
   { 
      if ( is_home() ) $sidebars_widgets = array( false ); 
      return $sidebars_widgets; 
   } 
?>

これはあなたのホームページのウィジェットを無効にするだけであることに注意してください、それであなたは個々のページ/ポスト/ etcのための追加の条件を見つける必要があるでしょう。

4
Dillie-O

あなたがwidgets.phpからの内部関数を利用するならば、それはこれと同じくらい簡単です:

    // 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') は、以下の理由により動作しません。

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

"Widgets"メニュー項目 は、wp_widgets_add_menu() によって設定されるように、_admin_menuフック で呼び出されるwp_maybe_load_widgets() によって追加されます。これを無効にするには、_admin_menuからフックを解除するか、load_default_widgetsに対してfalseを返します。

Bainternetが提案したようにすべてのサイドバーとremove_theme_support( 'widgets' )を登録解除することもできます。

1
Jan Fabry