Support » Allgemeine Fragen » Widgetbereiche im Theme registrieren

  • Gelöst Anonymous User 20597857

    (@anonymized-20597857)


    Hoffe, das ist nicht zu OT für Anwendersupport:
    Wie erstellt man eine eigene Widgetleiste/Widgetbereich?
    Man hat z.B. ein wunderschönes Theme, welches aber ausgerechnet dort, wo man es brauchen würde, keinen Bereich für Widgets mitbringt.

    Früher habe ich dafür einfach https://de.wordpress.org/plugins/widget-areas/ genommen.
    Doch nun finde ich keinen Ersatz.

    Andererseits soll es rel. einfach sein, Widgetbereiche im Child-Theme zu registrieren.
    Nur wie?

Ansicht von 14 Antworten - 1 bis 14 (von insgesamt 14)
  • Hallo,
    ich denke, dass du damit klassische Themes meinst. Hier wäre eine Anpassung eines Templates notwendig, wenn es kein Plugin (mehr) dafür gibt. Ich habe gerade kurz recherchiert und nichts passendes gefunden.

    Allerdings gibt es hier eine schöne Lesson im Rahmen von Learn WordPress (allerdings auf englisch): https://learn.wordpress.org/lesson-plan/widget-areas/

    Einfacher geht das mit Block Themes wie z. B. Twenty Twenty-Four. Aber wenn ich das richtig in Erinnerung habe, verwendest du keine Block Themes. Schade eigentlich 😉

    Viele Grüße
    Hans-Gerd

    Moderator Bego Mario Garde

    (@pixolin)

    Damals™, in den Anfängen von WordPress, war der einzige Ort um ein Widget zu platzieren die Sidebar. Damit im Backend im Menü Design Widgets ersichtlich war, dass man Widgets in eine Sidebar ziehen konnte, musste die Sidebar mit register_sidebar() zunächst für Widgets benannt („registriert“) werden. Damit kannst du den von dir gewünschten Widget-Bereich individuelle Namen wie zum Beispiel „Left“, „Top“, „Footer“, … zuweisen.

    Inzwischen, Neuzeit, 21. Jahrhundert, hat man die Dokumentation einfach etwas angepasst, wobei die Bezeichnung Sidebar als Ort, in dem Widgets platziert werden, weiter genutzt wird:

    Eine Sidebar ist ein mit Widgets ausgestatteter Bereich deines Themes.

    Theme Handbook: Sidebars

    Mit anderen Worten: alles wo ein Widget platziert werden kann, wird kurzerhand zur Sidebar erklärt. 😀

    (Achte darauf, dass es neben register_sidebar() noch eine Pluralvariante gibt: register_sidebars() übernimmt gleich mehrere Registrierungen in einem Array.)

    Nur weil du nun den Widgetbereich benannt hast, erscheint das Widget aber noch nicht im Frontend. Dafür musst du in deinen Templates die Funktion get_sidebar() verwenden (falls du tatsächlich eine Sidebar verwendest, üblicherweise im Template sidebar.php).

    Hast du also z.B. mit

    add_action( 'widgets_init', 'my_register_sidebars' );
    function my_register_sidebars() {
      /* Register the 'primary' sidebar. */
      register_sidebar(
        array(
          'id'          => 'primary',
          'name'        => __( 'Primary Sidebar' ),
          'description' => __( 'A short description of the sidebar.' ),
        )
      );	
    }

    … eine Sidebar „Primary“ eingerichtet, kannst du mit

    <?php get_sidebar( 'primary' ); ?>

    die Widgets im richtigen Template an der richtigen Stelle einbinden.

    Da nun auch die Möglichkeit besteht, dass der Anwender der Sidebar im Menü Design > Widgets gar keine Widgets zuweist („oooh …“), kannst du das ganze auch etwas dynamischer gestalten:

    <?php if ( is_active_sidebar( 'primary' ) ) : ?>
      <ul id="sidebar">
      <?php dynamic_sidebar( 'primary' ); ?>
      </ul>
    <?php endif; ?>

    Umgangssprachlich ausgedrückt: nur wenn die Sidebar „primary“ aktiv genutzt wird, lade dynamisch die zugewiesenen Widgets an dieser Stelle. Alternativ kannst du dann auch von dir definierte Standard-Widgets anzeigen lassen. Die Dokumentation, in der du das alles (auf Englisch) nachlesen kannst, hat dafür ebenfalls ein Beispiel: Sidebars.

    Leider haben Sidebars und Widgets durch die Nutzung von Smartphones an Bedeutung verloren, da ihr Inhalt bei responsive Webdesign üblicherweise an den unteren Rand gedrückt wird, wo er etwas deplatziert wirkt. Zusätzlich konkurriert die Sidebar mit Off-Canvas-Menüs. Aber ob und wie du Widgets einsetzt, bleibt natürlich deiner unermesslichen Kreativität überlassen.

    Moderator Bego Mario Garde

    (@pixolin)

    @hgg

    Aber wenn ich das richtig in Erinnerung habe, verwendest du keine Block Themes. Schade eigentlich 😉

    Wenn ich mich richtig erinnere, wollte @kurapika im Mai anfangen, nur noch Block-Themes zu verwenden. Richtig, @kurapika?!*

    *mit leicht passiv-agressivem Unterton 😜

    Und wenn @kurapika dann doch noch widgets aus seinem klassischen Theme in ein Block Theme importieren möchte, wird das in dem folgenden Video wiederum sehr schön erläutert:
    https://learn.wordpress.org/tutorial/importing-widget-areas-from-a-classic-theme-to-a-block-theme/

    Aber jetzt lassen wir es besser mal gut sein, nicht wahr @pixolin? 😝

    Moderator Bego Mario Garde

    (@pixolin)

    Wie gesagt: mit leicht passiv-agressivem Unterton. 🥳

    Thread-Starter Anonymous User 20597857

    (@anonymized-20597857)

    Danke beiden für den Lesestoff, das werde ich demnächst testen. (Obwohl, oder grade, weil ich inzwischen einen Trick 17 fand, das (beim Theme „OnePress“) zu umgehen)

    kurz recherchiert

    Ein paar Codes-„Schnitzel“ (ja, das stand mal hier so!) fand ich schon, aber wie üblich nix kapiert.

    Einfacher geht das mit Block Themes … verwendest du keine Block Themes. Schade eigentlich 😉

    Zu Schade, ja …

    Damals™

    Anno Domini™ musste man halt noch selber was coden, heute nehmen alle den Blocksberg…

    Letzte Codeschnitzel fand ich auch, sogar verstanden, aber mir fehlte das Verständnis für „wie fange ich an?“ Das ist nun hoffentlich anders.
    Ob die „Energie des Verstehens“ (ehem. Leitspruch von Stefan Münz) nun fließt? Wir werden sehen …

    Heute komme ich nicht mehr dazu, aber ich probiere das sicher aus!
    Das dein Code sicher funkt (und wenn nicht, bin ich Schuld) markiere ich das mal als gelöst.

    PS: Falls noch jemand ein Plugin weiß, was diese Arbeit für Faulpelze erledigt: Ja, gerne.

    Danke!

    PS 2:

    Wenn ich mich richtig erinnere

    habe ich das nie behauptet …

    PS 3:
    Ihr zwei werdet es nicht glauben, aber ich habe mir zu Ostern echt das Blockding näher zu Gemüte geführt. Doch, nein, es ist nicht meins. Da übernachte ich lieber im CSS Code als ein paar Stunden am Blocksberg …

    • Diese Antwort wurde geändert vor 3 Wochen, 1 Tag von Anonymous User 20597857. Grund: Nachtrag
    Moderator Bego Mario Garde

    (@pixolin)

    Für den unwahrscheinlichen Fall, dass dir meine Ausführungen nicht lang genug waren, gibt es hier noch eine hübsche Zusammenfassung: Der vollständige Leitfaden zu WordPress Widgets: Wie man sie verwendet, hinzufügt und implementiert, um deine Webseite anzupassen

    Wenn ich mich richtig erinnere

    habe ich das nie behauptet …

    Es soll auch noch Firmen geben, die ihre Kommunikation per Faxgerät abwickeln. 😛

    Moderator La Geek

    (@la-geek)

    Bego – @pixolin

    <?php if ( is_active_sidebar( 'primary' ) ) : ?>
      <ul id="sidebar">
      <?php dynamic_sidebar( 'primary' ); ?>
      </ul>
    <?php endif; ?>

    ist ul da wirklich sinnvoll, das ergibt letztendlich verschachtelte unsortierte Listen? Wäre aside oder section nicht besser?

    @kurapika
    suche im Plugin-Repository mit „sidebar“, dieses Plugin könnte zum Beispiel gut funktionieren: https://de.wordpress.org/plugins/sidebar-manager/

    Moderator Bego Mario Garde

    (@pixolin)

    @la-geek Die Verwendung von aside und section ist durchaus korrekt, wobei es mir aber vorrangig darum ging, register_sidebar(), get_sidebar() und dynamic_sidebar() zu erläutern und die Frage zu beantworten, wieso weiterhin von Sidebars gesprochen wird, selbst wenn der Widgetbereich im Header oder Footer ist. Ich hatte nicht den Anspruch, ein barrierefreies Template zu schreiben.

    Die Verwendung von ul im Widget-Bereich scheint soweit in Ordnung zu sein und wird auch in der offiziellen Dokumentation so verwendet.

    Für Navigationsmenüs (z.B. der Navigations-Block in Twenty Twenty-Four) wird sogar ausdrücklich die Nutzung von ul-Tags empfohlen (Menu Structure), weil der Screenreader dann die Anzahl der Menüeinträge vorlesen kann: „Solche strukturelle Informationen ermöglichen es assistiven Technologien, die Anzahl der Menüpunkte anzuzeigen und entsprechende Navigationsfunktionen bereitzustellen.“

    Moderator La Geek

    (@la-geek)

    Die von dir verlinkte offizielle Dokumentation verwendet aside oder div für die sidebar, ul ist für die einzelnen Widgets 🙂 aber ich sehe gerade dort
    https://developer.wordpress.org/reference/functions/dynamic_sidebar/ ist die (9 Jahre alte = User Contribution Notes) „Empfehlung“ ul zu verwenden.

    Mir kommt das verkehrt oder besser ausgedrückt „kontraproduktiv“ vor.

    Thread-Starter Anonymous User 20597857

    (@anonymized-20597857)

    Danke nochmal.
    Das biege ich mir schon hin. Es ging ja eh nur um den Register Code.

    Dieses Einhängen ins Theme/Template wird ohnehin schwieriger, egal ob Abfrage oder nicht. „OnePress“ scheint da eigene Regeln zu haben, dich ich erst kapieren muss.
    Aber wenn ich das brandneue Fax bedienen kann, schaffe ich das auch …

    Moderator Bego Mario Garde

    (@pixolin)

    aber ich sehe gerade dort
    https://developer.wordpress.org/reference/functions/dynamic_sidebar/

    Genau, das war der Code, den ich (mit abgeändertem Namen des Widget-Bereichs) verwendet habe. Eine offiziellen Empfehlung ist das nicht, nur „User Contributed Notes“.

    Moderator La Geek

    (@la-geek)

    @kurapika die Frage ging an Bego, da mich das ul stutzig gemacht hatte. Ich habe seit Ewigkeiten keine Sidebar mehr manuell eingefügt, nahezu alle Page-Builder bieten dafür eigene Module/Elemente an. Ich wollte nur nachfragen, ob andere HTML-Block-Elemente nicht doch geeigneter wären. Außerdem lesen hier im Forum ebenfalls weitere User diesen Thread, kontextbezogene Antworten, Ausführungen und Code sind also immer auch für die gesamte Community gedacht.

    Für dich hatte ich extra ein Plugin herausgesucht, im Kontext zu:

    PS: Falls noch jemand ein Plugin weiß, was diese Arbeit für Faulpelze erledigt: Ja, gerne.

    Nachtrag:

    Es ging ja eh nur um den Register Code.

    Es ging darum, den Widgetbereich/die Sidebar in ein Child-Theme einzufügen, dazu gehört selbstverständlich ebenfalls der HTML-Code.

    Die Frage dürfte nun bis ins Detail beantwortet sein und bevor das noch ins OT rutscht, mach ich den Thread an dieser Stelle zu.

    • Diese Antwort wurde geändert vor 3 Wochen von La Geek.
    Moderator Torsten Landsiedel

    (@zodiac1978)

    Wenn du noch nach einem Plugin suchst @kurapika

    Vielleicht das hier:
    https://de.wordpress.org/plugins/custom-sidebars/

Ansicht von 14 Antworten - 1 bis 14 (von insgesamt 14)
  • Das Thema „Widgetbereiche im Theme registrieren“ ist für neue Antworten geschlossen.