WordPress: jak wyrejstrować domyślne widgety?

W kilku wdrożeniach nie używam prawie żadnego ze standardowych widgetów w jakie wyposażony jest WordPress, zastępując ich funkcjonalność, bądź zwyczajnie ich nie wykorzystując.

Na pewnej dużej witrynie wykorzystującej naprawdę sporo różnego rodzaju dodatków na ekranie „Widgety” panował straszliwy wręcz chaos. Mnóstwo używanych i nie używanych, instancje już nie używane, podobne nazwy.

W całym tym gąszczu co i raz łapałem standardowe widgety, których o zgrozo, wcale nie chciałem użyć.

Okazało się, że bez kłopotu można je wyłączyć, co umożliwia poniższy kod.

/**
 * unregister standard widgets
 */
function iworks_unregister_widgets()
{
    $standard_widgets = array
        (
            'Pages',
            'Calendar',
            'Archives',
            'Links',
            'Meta',
            'Search',
            'Text',
            'Categories',
            'Recent_Posts',
            'Recent_Comments',
            'RSS',
            'Tag_Cloud',
        );
    foreach ( $standard_widgets as $widget_class ) {
        unregister_widget( 'WP_Widget_'.$widget_class );
    }
}
add_action('widgets_init', 'iworks_unregister_widgets');

pobierz plik: iworks_unregister_widget.php.zip

Jak użyć podany kod?

Masz 3 rozwiązania:

  1. wrzuć załączony plik do folderu wp-content/plugins, a potem włącz wtyczkę
  2. wrzuć załączony plik do folderu wp-content/mu-plugins
  3. dołącz kod do pliku functions.php aktualnie używanego motywu

7 odpowiedzi do “WordPress: jak wyrejstrować domyślne widgety?”

  1. A mam takie pytanie. chciałem obok nazw widgetow umiescic obrazek i nie moge dojsc w jakim pliku są przechowywane widgety (standardowe)

  2. Standardowe widgety są tutaj:

    wp-includes/widgets.php

    ale modyfikacji plików „core’a” to bym odradzał.

  3. @Łukasz: jeżeli sprawa jest jeszcze nierozwiązana – możesz to załatwić przez css. Musisz dowiedzieć się, jak są wyróżnione tytuły widgetów w motywie, którego używasz (np. tu na tej stronie są to tagi h3 z klasą „box-title”) i odpowiednio je ostylować, np.: {background: url(sciezka/obrazek.jpg) no-repeat left top;}, ewentualnie jeszcze padding, jeśli obrazek byłby z lewej strony tekstu tytułu.

  4. Czy w jakieś konkretne miejsce w pliku functions mam wkleić ten kod? Czy usunąć to co jest tam już napisane o tych widgetach?
    Pierwszy raz robię stronę i się zupełnie nie znam :(
    proszę o pomoc

    1. @Iwona: dodałem do wpisu trzy opcje użycia podanego kodu.

      W żadnym wypadku nie usuwaj tego co tam już jest, bo to jest kod związany z działaniem Twojego motywu.

      Dodaj np. na końcu, bo tak jest najbezpieczniej.

Możliwość komentowania jest wyłączona.

Jeżeli chcesz skomentować, napisz mail na adres marcin w domenie strony na której jesteś. Dodam twoj komentarz.