Suchen Sie nach einer Möglichkeit, Widgets auf bestimmten Seiten in WordPress anzuzeigen oder auszublenden? Es gibt wahrscheinlich ein Plugin dafür, aber wir haben einen schnellen Code-Schnipsel erstellt, den Sie verwenden können, um Widgets auf bestimmten Seiten in WordPress anzuzeigen oder auszublenden.
Als Erstes müssen Sie den ID-Namen des Widgets ermitteln, das Sie definieren möchten. Dies können Sie tun, indem Sie den Seitenquelltext anzeigen oder ein Web-Inspektor-Tool verwenden, um die Widget-ID anzuzeigen. Das aktuelle Beispiel ist so eingerichtet, dass nur das Kern-Widget 'Seiten' nur auf der Kontaktseite angezeigt wird. Vergessen Sie nicht, dass is_page auch ein Array von Seitennamen und IDs akzeptiert.
Anweisungen:
Sie müssen diesen Code nur zur functions.php-Datei Ihres Themes oder in ein websitespezifisches Plugin einfügen:
add_filter( 'widget_display_callback', 'hide_widget_pages', 10, 3 );
function hide_widget_pages( $instance, $widget, $args ) {
if ( $widget->id_base == 'pages' ) { // change 'pages' to widget name
if ( !is_page( 'contact' ) ) { // change page name
return false;
}
}
}
Hinweis: Wenn Sie zum ersten Mal Code-Schnipsel in WordPress hinzufügen, lesen Sie bitte unseren Leitfaden, wie Sie Code-Schnipsel richtig in WordPress hinzufügen, damit Sie Ihre Website nicht versehentlich beschädigen.
Wenn Ihnen dieser Code-Schnipsel gefallen hat, ziehen Sie bitte in Betracht, unsere anderen Artikel auf der Website zu lesen, wie z. B.: 30 Möglichkeiten, mit Online-Blogs Geld zu verdienen und wie man ein WordPress-Formular mit einem Datumsauswahl erstellt.
Liebe diesen Tutorial-Schnipsel, danke!
Leider habe ich 2 Warnungen erhalten:
array_merge(): Argument #2 ist kein Array
array_merge(): Argument #1 ist kein Array
Es hat die Seitenleisten von der bedingten Seite entfernt, auch mit Fehlern.
Ich lerne noch PHP und bin mir nicht sicher, wie ich das Array $args einfügen kann. Könnten Sie mir bitte helfen? Das wäre wunderbar.
Ich frage mich auch, ob es eine Möglichkeit gibt, ein (ein) oder mehrere spezifische Widgets aus einer bestimmten Seitenleiste zu entfernen, ohne alle zu entfernen.
So oder so, danke für das Posten dieses Schnipsels <3
Fügen Sie ein Array zum Schnipsel hinzu?
Hallo 🙂
Ihr Code hat für mich auf allen WordPress-Seiten funktioniert, aber dieser Code hat für mich auf der WooCommerce-Shop-Seite nicht funktioniert. Ich habe ein einfaches Produkt-Suchleisten-Widget im Header auf jeder Seite, aber ich möchte es nur auf der SHOP-Seite haben. Meine WooCommerce-Shop-Seiten-ID ist 552, also habe ich diesen Code verwendet:
add_filter( ‘widget_display_callback’, ‘hide_widget_pages’, 10, 3 );
function hide_widget_pages( $instance, $widget, $args ) {
if ( $widget->id_base == ‘woocommerce_product_search’ ) { // ‘pages’ in Widget-Namen ändern
if ( !is_page( ‘552’ ) ) { // Seitennamen ändern
return false;
}
}
}
Wenn ich eine weitere Seiten-ID wie die „Über uns“-Seite mit der ID 551 hinzufüge... wenn ich diese ID einstelle, wird Ihr Code die Produktsuchleiste auf jeder Seite ausblenden, außer auf der „Über uns“-Seite. Aber wenn ich die ID der SHOP-Seite, nämlich 552, eingebe, fehlt die Suchleiste auf allen Seiten, auch auf der Shop-Seite von WooCommerce. Können Sie mir bitte helfen? Vielen Dank 🙂
Sie sollten noch einmal überprüfen, ob 552 die richtige ID ist. Wenn ja, sollten Sie sich an den WooCommerce-Support wenden.
Könnten Sie mir bitte mitteilen, wie ich den Schnipsel ändern kann, damit ich mehrere Widgets auf bestimmten Seiten ausblenden kann?
Großartig, Joel! Ich freue mich darauf, mehr von dem zu sehen, woran Sie gearbeitet haben.
Sehr nützlicher Code. Danke fürs Teilen.
Kein Problem, Sajan. Joel Worsham wird zu wpsnipp.com beitragen, daher bin ich sicher, dass er viele großartige Snippets zu bieten hat.
Gefällt mir. Danke fürs Teilen.
Spart die Installation eines weiteren Plugins.
Sehr wahr, Brad, ein schönes und einfaches Snippet!