WordPress Standard Widgets deaktivieren
Anzeige
Nicht immer möchte man alle Widgets, die der WordPress Core so mitbringt, im Theme aktiv haben. Das haben sich auch die Entwickler von WordPress gedacht und eine entsprechende Funktion mitgeliefert anstatt die Widgets in ein Plugin, gern auch als Core Plugin, ausgelagert.
Für Theme-Autoren bleibt nur der Weg, in die functions.php des Themes eine kleine Funktion abzulegen, die die Widgets, welche man nicht mag, deaktiviert. Der folgende Syntax schaltet alle Standard-Widgets ab. Er sollte daher angepasst werden, je nach Anforderung.
// unregister all default WP Widgets
function unregister_default_wp_widgets() {
unregister_widget('WP_Widget_Pages');
unregister_widget('WP_Widget_Calendar');
unregister_widget('WP_Widget_Archives');
unregister_widget('WP_Widget_Links');
unregister_widget('WP_Widget_Meta');
unregister_widget('WP_Widget_Search');
unregister_widget('WP_Widget_Text');
unregister_widget('WP_Widget_Categories');
unregister_widget('WP_Widget_Recent_Posts');
unregister_widget('WP_Widget_Recent_Comments');
unregister_widget('WP_Widget_RSS');
unregister_widget('WP_Widget_Tag_Cloud');
}
add_action('widgets_init', 'unregister_default_wp_widgets', 1);
Die Funktion unregister_widget() benötigt als Parameter die Übergabe der Klasse, damit ist der Code hier nur ab Version 2.8 nutzbar, im Vorfeld wurden Widgets anders unterstützt.
Wie man eigene Widgets ab WordPress Version 2.8 erstellt, kann man beispielsweise im Beitrag WordPress 2.8 Widget erstellen von Micha nachlesen.
20. August 2009 um 00:21
Welchen Vorteil gewinnt man denn damit? Die Widgetseite im Backend wird vielleicht etwas übersichtlicher … aber sonst?
20. August 2009 um 08:01
Wunderbar! Jetzt sieht es viel aufgeräumter aus, da ich bis auf das Textwidget keine WP-eigenen Widgets nutze, stören die Standarddinger doch ungemein.
20. August 2009 um 09:21
@Thomas: was gerade bei Kundenanwendungen, wo ich zig Bereiche definiere und nur eigene Widgets zulasse, keine Fragen entstehen, da die nicht zu nutzenden Widgest einfach nicht da sind. Im weiteren gewinnt man Übersicht.
20. August 2009 um 18:51
Ich setze eine ganze Reihe von Widgets ein und bin über eine solche Möglichkeit sehr froh. So kann man sich vom unnötigen Müll ohne weiteres trennen. Danke für die Anleitung!
8. September 2009 um 14:58
Danke für den coolen Tipp!
Sorry, wegen der Anfängerfrage: Wo genau muss man denn den Schnipsel in der functions.php einbinden? Bislang zeigt mein Blog nämlich noch nicht das gewünschte Resultat...
8. September 2009 um 15:12
egal wo, es muss nur in der functions.php des aktiven Themes sein. Die PHP Schlüssel nicht vergessen, wenn es die Datei nicht gab oder leer ist: <?php ?>
28. September 2009 um 11:43
ok, die funktion ist in functions.php eingebaut....
wo muss ich die "add_action..." einfügen?! kenne mich noch net so doll aus..
danke
28. September 2009 um 12:12
@marco: alles in die
functions.php, der Aufruf wird aus der Datei raus gestartet.28. September 2009 um 12:34
wer lesen kann....:-)
hab jetzt alles komplett unten in die functions.php des themes eingefügt (z.b. in das standard-theme).....aber widgets wie kategorien oder archiv werden trotzdem noch angezeigt?! wo ist noch der haken?
danke
28. September 2009 um 16:57
Das liegt wohl am verwendeten Theme. Es gibt diverse Themes, die eine Art Fallback eingebaut haben, wenn die dynamische Sidebar - also die, wo die Widgets landen - deaktiviert ist oder keine Widgets angezeigt werden.
Guck am besten mal in die
sidebar.php. Dort ist sicher einiges eingetragen, was im Falle deaktivierter Widgets angezeigt wird.28. September 2009 um 17:12
@marco: in meinem Tutorial habe ich lediglich die Standard-Widgets benannt, jedes Theme kann wieder eigene Widgets mitbringen die in der Regel in der functions.php des Themes zu finden sind. Man kann auch diese Deaktivieren. Alternativ kannst du ja den ganzen Punkt Widgets mit einem Plugin deaktivieren, zum Beispiel Adminimize oder Member.http://bueltge.de/wp-admin/edit-comments.php#comments-form
28. September 2009 um 17:33
danke für die hilfe!!
habs jetzt mal mit auskommentieren in der sidebar.php probiert....geht einwandfrei.
hab auch mal deinen adminimizer installiert...HILFE: es sind unter widgets keine mehr zur verfügung ausser die von NextGen...ahh
28. September 2009 um 17:41
@marco: nextgen kann ebenso gefiltert werden, dazu muss die ID bekannt sein, die man wieder nur im Plugin von Nextgen findet. Daher via Adminimize den Menu-Punkt Widget entfernen und schon ist der Zugriff nicht mehr sichtbar.
28. September 2009 um 17:52
ich denke ich fahre am besten in dem ich den entsprechenden teil im code einfach auskommentiere. dann erscheint er auf der seite nicht mehr. das is es ja was ich will..also die core widgets auf der seite ausschalten.
28. September 2009 um 18:06
Wenn du aber die Widgets in der Sidebar ausschaltest, dann sind es keine Core-Widgets. Mir scheint, hier liegt ein Verständnisproblem vor. Du scheinst einfach im Theme, im Frontend deines Blog diverse Inhalte weg haben zu wollen. Der obige Code zeigt, wie man die Widgets im Admin-Bereich nicht aktiv hat, so dass man sie nicht in den Sidebar holen kann.
28. September 2009 um 19:39
richtig! das frontend ist gemeint...
und zwar dort die core-widgets...
und die funktion von dir in der theme functions.php läuft leider nicht....alles drin, code läuft durch aber widgets sind trotzdem da (standard theme)
29. September 2009 um 08:17
gibt es oder hast du einen ansatz, dass ich im backend eine variable true/false setzen kann und sie im theme einfach abfrage?! dann kann man sich selber nen "schalter" für bestimmte teile der seite bauen...
müsste doch gehen.
danke, gruß
29. September 2009 um 10:49
@marce: ich kann die Anforderung nicht verstehen. Ich denke noch immer, dass du was vermischt. Meine obige Funktion sorgt dafür, dass die Standard-WordPress-Widgets nicht im backend zur Verfügung stehen, damit kann man sie aber trotzdem im Theme nutzen, also im Forntend einbinden. Das sind zwei paar Schuhe.
4. Juli 2010 um 14:04
Super Artikel werde es versuchen gleich umzusetzen.