Custom Header
Das Custom-Header-Modul ermöglicht die Erstellung eines vollwertigen Headers mit Navigationsbuttons und frei definierbarem HTML – komplett über das Admin-Dashboard, ohne Theme-Anpassungen. Den Header, den du gerade auf weinify.de siehst, wurde mit diesem Modul gebaut.
Allgemein
Buttons & Drag and Drop
Buttons werden über den Platzhalter –buttons– an einer beliebigen Stelle im Header-Inhalt eingefügt. Die Reihenfolge lässt sich per Drag & Drop anpassen. Buttons können Sub-Buttons enthalten, die beim Hover ein Dropdown-Menü öffnen. Pro Button lässt sich außerdem die Sichtbarkeit festlegen: immer, nur für eingeloggte oder nur für ausgeloggte Besucher.
Login-Navigation per Platzhalter
Zusätzlich zu –buttons– gibt es den Platzhalter –auth–, der an dieser Stelle die Login/Profil-Navigation des Benutzerverwaltung-Moduls einfügt (identisch zum Shortcode weinhold_auth_nav). Nur im Header verfügbar, nicht im Footer.
Pro Site, kein Shortcode
Jede Subsite konfiguriert ihren eigenen Header unabhängig. Inhalt, Buttons und Styling sind vollständig voneinander getrennt – dkj.weinify.de kann einen völlig anderen Header haben als weinify.de. Der Header wird automatisch in jede Seite der jeweiligen Subsite eingebunden, sobald er im Dashboard konfiguriert und aktiviert wurde. Kein Shortcode nötig.
Social-Vorschau
Unter den Header-Einstellungen gibt es einen eigenen Abschnitt „Social-Vorschau“. Er legt fest, welches Bild, welchen Titel und welche Beschreibung Discord, WhatsApp, Signal & Co. anzeigen, wenn ein Link zur Subsite geteilt wird (Open Graph und Twitter Card im Seitenkopf). Das Bild wird aus der Mediathek gewählt, empfohlen sind 1200 × 630 Pixel. Unterseiten verwenden ihren eigenen Titel, ein gesetztes Beitragsbild und einen bewusst geschriebenen Auszug. Ohne eigene Angaben greifen Titel, Untertitel und Website-Icon der Subsite. Optional wird die Beschreibung zusätzlich als Meta-Beschreibung für Suchmaschinen ausgegeben.
Dateien
modules/custom_header.php – Modul-Datei (Init, Admin-Seite, Cleanup) und die komplette Social-Vorschau (nur Header). Die Header-Ausgabe selbst delegiert sie an das gemeinsam mit Custom Footer genutzte includes/weinhold_custom_layout_helpers.php.
Für Entwickler
Gemeinsamer Unterbau mit Custom Footer
Header und Footer sind keine zwei getrennten Implementierungen, sondern dieselbe Logik in includes/weinhold_custom_layout_helpers.php, parametrisiert über $layout (‚header‘ oder ‚footer‘). weinhold_custom_layout_get_config($layout) liefert dazu Hook-Name (wp_head bzw. wp_footer), HTML-Tag, ob der –auth—Platzhalter unterstützt wird (nur Header) und die Öffnungsrichtung der Sub-Button-Menüs.
Speicherung (Optionen pro Site)
Option Inhalt weinhold_custom_header_enabled Ob der Header aktiv ausgegeben wird weinhold_custom_header_html Der HTML-Inhalt mit den Platzhaltern –buttons– / –auth– weinhold_custom_header_links Array der Buttons (Beschriftung, Ziel-URL, übergeordneter Button für Sub-Buttons, Sichtbarkeit) weinhold_custom_header_social_settings Social-Vorschau: enabled, image_id, title, description, prefer_featured, output_description
Beim Footer entsprechend mit dem Präfix weinhold_custom_footer_* (ohne Social-Vorschau).
Wichtige Funktionen
Funktion Beschreibung weinhold_custom_layout_init($layout) Hängt den Render-Callback an wp_head bzw. wp_footer, baut das Button-HTML inkl. Sub-Buttons zusammen weinhold_custom_layout_resolve_link_url($value) Löst Spezial-Tokens in Button-Zielen auf (z. B. Links auf Auth-Seiten) weinhold_custom_layout_sanitize_html($html) Bereinigt gespeichertes HTML über eine eigene, erweiterte Erlaubnisliste (weinhold_custom_layout_allowed_html()) weinhold_custom_layout_get_button_visibility_class($link) Übersetzt die Sichtbarkeitseinstellung eines Buttons in die CSS-Klasse weinhold-show-on-login bzw. weinhold-show-on-logout weinhold_custom_header_render_social_preview() Gibt die Open-Graph- und Twitter-Card-Angaben an wp_head (Priorität 5) aus weinhold_custom_header_social_get_meta($settings) Ermittelt Titel, Beschreibung, URL und Typ der aktuellen Seite weinhold_custom_header_social_get_image($settings) Wählt Beitragsbild, Standardbild oder Website-Icon samt Größe
Die Sichtbarkeitsklassen greifen auf dieselbe CSS-Logik zurück, die auch die Shortcodes weinhold_show_on_login/weinhold_show_on_logout des Benutzerverwaltung-Moduls nutzen (weinhold_user_management_render_visibility_css()).
Rückwärtskompatibel gespeicherte Buttons: ältere Buttons ohne das neue visibility-Feld werden über das frühere boolesche Feld login_only interpretiert, statt beim Update verloren zu gehen. Freies HTML ohne Whitelisting von Grund auf – erlaubt sind bewusst mehr Tags/Attribute als WordPress‘ Standard-Editor zulässt (eigene erweiterte Erlaubnisliste), damit auch komplexere Layout-Strukturen im Header/Footer möglich sind. Die Social-Vorschau hat einen eigenen Schalter (standardmäßig aus) und wirkt unabhängig davon, ob der Header angezeigt wird, auch auf Auth-Seiten. Ist ein SEO-Plugin aktiv (Yoast, Rank Math, AIOSEO, SEOPress, The SEO Framework), gibt sie nichts aus, damit keine doppelten Angaben entstehen. Die Beschreibung von Unterseiten stammt nur aus einem gesetzten Auszug, nie aus dem gekürzten Inhalt, weil der Shortcodes oder geschützte Texte enthalten kann.Besonderheiten
Wird auf Auth-Seiten (Login, Registrierung, Profil, Passwort-vergessen) automatisch unterdrückt – weinhold_user_management_is_auth_page() prüft das vor jeder Ausgabe, damit der eigene Header/Footer die dortigen Formulare nicht stört.
Versionshistorie
Version Datum Änderung 1.0.1 28.10.2026 Social-Vorschau (Open Graph, Twitter Card) mit Bild aus der Mediathek, Titel und Beschreibung. 1.0.0 22.09.2026 Einführung der Versionierung.