Das kostenlose WordPress-Theme aus Deutschland

Sicherheit

  • Fest codierter Google-Fonts-API-Schlüssel entfernt.
  • Open Redirect in template-parts/content-single.php geschlossen
    (wp_safe_redirect + esc_url_raw).
  • XSS in den Post-Meta-Daten für externe Links (content.php / content-link.php) —
    4 Websites mit esc_url() gepatcht.
  • XSS in der Hintergrund-URL des Beitrags-Thumbnails und in $caption->post_excerpt
    (Einzel- und Seitenvorlagen).
  • CSRF + WP_Query-Injektion in wp_ajax_loadmore_posts — Nonce +
    Whitelist zulässiger Abfragevariablen, orderby auf sichere Teilmenge beschränkt,
    posts_per_page aus get_option.
  • CSRF + fehlendes absint() in wp_ajax_loadmore_comments – Nonce +
    absint() bei allen Eingaben.
  • CSRF/save_post im URL-Feld des Beitragsformats „Link“ – Nonce +
    current_user_can('edit_post') + esc_url_raw().
  • CSRF/save_post bei den WooCommerce-Basispreis-Feldern
    (save_fields, save_custom_field_variations) – WC-eigenes
    woocommerce_meta_nonce + Berechtigung edit_product +
    DOING_AUTOSAVE-Prüfung.
  • CSRF beim AJAX-Handler svg_get_attachment_url_media_library
    check_ajax_referer + Berechtigung upload_files.
  • Speichern von Metaboxen in backend_admin_settings — typabhängige Bereinigung
    (sanitize_text_field, wp_kses_post, array_map für mehrere Kontrollkästchen);
    <iframe> ist in Textarea-/Wpeditor-Feldern nicht mehr zulässig.
  • Speichern von Navigationsmenü-Einträgencurrent_user_can('edit_theme_options') +
    wp_attachment_is_image()-Validierung der Bild-ID; alle $item_id
    Ausgaben werden mit esc_attr umschlossen.
  • Social-Widget — URLs über esc_url_raw/esc_url, icon_color hex-
    validiert, html_code über wp_kses_post, title über esc_html.
  • Benutzerdefiniertes CSS pro Beitrag wird durch wp_strip_all_tags geleitet, um das
    Ausbrechen von </style><script> zu verhindern.
  • Widget woocommerce_sortingsanitize_key() auf $_GET['orderby'].
  • Debug-Helper webseideModules()->debug() wird nur bei gesetztem WP_DEBUG aufgerufen.
  • SVG-Abmessungsfilter verwendet nun get_attached_file() (lokales Dateisystem)
    anstelle von simplexml_load_file($url) – behebt allow_url_fopen=0
    Warnungen sowie DivisionByZeroError in webseide_get_logo().
  • Toter Code: wp_ajax_updatePostMeta-Stub in editbox.php entfernt.
  • Veraltete Funktionen in PHP 8.2 bereinigt: ThemeUpdate / ThemeUpdateChecker
    mit #[AllowDynamicProperties] kommentiert; strpos/str_replace
    gegen Null-Werte abgesichert; DivisionByZero verhindert.
  • TGMPA (Bibliothek zur Plugin-Empfehlung) vollständig entfernt.

Leistung

  • Mitgelieferter Google-Fonts-Snapshot (inc/data/google-fonts.json, ~140 KB)
    — Die Schriftartauswahl im Customizer funktioniert offline, kein API-Schlüssel erforderlich.
  • fetchpriority="high" im Haupt-Stylesheet webseide-style
    (LCP-Hinweis).
  • Alle Theme-Skripte verzögert geladen über den Filter script_loader_tag.
  • webseide.js in die Fußzeile verschoben mit korrektem Cache-Schlüssel für die Theme-Version.
  • Google-Fonts-URLs: preconnect zu fonts.googleapis.com +
    fonts.gstatic.com, &display=swap bei allen Schriftart-Anfragen.
  • WP-Core-Emoji-Skript + Stile deaktiviert.
  • loadmore_posts-JS wird nur bei paginierten Archiven in die Warteschlange gestellt.
  • loadmore_comments-JS wird nur bei Einzelansichten mit paginierten
    Kommentaren in die Warteschlange gestellt; wp_count_comments() lokal zwischengespeichert (wurde 3× pro
    Anfrage aufgerufen).
  • Customizer-CSS: Transient-Cache mit festem Schlüssel, Invalidierung mit Platzhaltern
    beim Speichern von Anpassungen / Theme-Wechsel / Mod-Update; Objekt-Cache leeren;
    ?webseide_css_bust=1 für manuelle Umgehung; robuster Minifier.
  • Bereinigung von Leerzeichen in CSS/JS: Komprimierung von Banner-Kommentaren (–3 % bei
    style.css), abschließende Leerzeichen, Zusammenfassung von Leerzeilen – Struktur und
    Zeilenumbrüche bleiben erhalten.
  • Wiederholte get_theme_mod-Aufrufe werden in lokalen Variablen zwischengespeichert.
  • svg.js in die Warteschlange einreihen: korrektes Deps-Array + Version + Fußzeile.

Kopfzeile

  • Neue Auswahl „Kopfzeilenlayout“: Klassisch / siteweit in Box / pro
    Seite in Box (Umschaltung pro Seite in der Metabox „Design“).
  • Kopfzeilen-Eckenradius (px), Abstand oben (px, schwebende Kopfzeile)
    und Hintergrundunschärfe (px).
  • Ausrichtungsrichtung des mobilen Menüs: rechts / links / oben / unten / Einblenden —
    gesteuert durch die Body-Klasse, kein veraltetes right:-400px-Slide mehr.
  • Kontrollkästchen Automatische Höhe des mobilen Menüs — das Panel passt sich dem Inhalt an statt
    100vh, wird unter der Kopfzeile angedockt und übernimmt den Radius der Kopfzeile.
  • Option Ausrichtung des Desktop-Menüs: Zentriert hinzugefügt.
  • Farbe der Hamburger-Streifen mit Fallback auf die Schriftfarbe der Kopfzeile.

Blog / Inhalt

  • Meta-Informationen zu Beiträgen als Mehrfach-Checkbox neu gestaltet
    (Datum / Kategorie / Lesezeit). Autor dauerhaft entfernt.
  • Featured-Bild in Einzelbeiträgen deaktivieren als seitenweiser Schalter in der
    Metabox „Design“.
  • Mobile Blog-Widgets: scrollbar (mit Chevron-Hinweis) oder ausgeblendet
    hinter dem Filter-Button.
  • Optionen im Blog-Customizer neu sortiert (Mobile Blog-Widgets ganz oben).
  • Die veraltete Vorgabe „Maximale Breite/Höhe für Bild-Uploads“ wurde entfernt.
  • Autorenboxen und Autoreninfo-Blöcke wurden aus allen Vorlagen entfernt.
  • „Metainformationen in Beiträgen anzeigen“ wurde so korrigiert, dass es nun auch für
    Einzelbeiträge gilt.
  • H1 auf WooCommerce-Checkout-Seiten: Der globale Schalter „H1 auf Seiten ausblenden“
    wird nun bei is_checkout() ignoriert; der seitenbezogene Schalter im Block-Editor gilt weiterhin
    .
  • Schalter für Vorschaubilder wurden in die Metabox „Design“ verschoben (Archiv + Detailansicht
    Ansicht-Kontrollkästchen).
  • Metabox „Design“: Tabellenlayout durch gestapelte Beschriftungen ersetzt; das Feld für benutzerdefiniertes
    CSS verwendet den nativen WordPress-CodeMirror; Reihenfolge der Felder überarbeitet.

WooCommerce

  • Warenkorb-Seite: H1-Ausgabe erfolgt automatisch (berücksichtigt den seitenbezogenen Schalter).
  • Schalter „H1 bei Produktkategorien und Tags deaktivieren“.
  • Mini-Warenkorb-Bereich: „Progressleiste für kostenlosen Versand anzeigen“ – wird im
    blockbasierten Mini-Warenkorb-Drawer und auf der Warenkorbseite innerhalb von
    .woocommerce-shipping-totals gerendert; wird bei Änderungen im Warenkorb automatisch aktualisiert.
  • Anzeigemodus für mobile WooCommerce-Widgets (scrollbar / Filter-
    Schaltfläche) mit Filter-/Sortieren-Integration.
  • Einstellungen für Widget-Spalten umbenannt (oberhalb / unterhalb des Shop-Loops).
  • webseide_woocommerce_hide_product_sorting behoben (Einstellung existierte
    schon seit jeher, war aber nie implementiert).
  • .wc-block-mini-cart wird auf der Warenkorb-/Kassenseite nicht mehr ausgeblendet.
  • Mehrstufiger Checkout-Assistent: Der aktive Schritt verwendet Schaltflächenfarben.
  • .wc-block-mini-cart__button::before: Die Symbolfarbe wird über
    mask-image + currentColor übernommen.

Menüs

  • Bildauswahl für Menüeinträge pro Eintrag (im Customizer aktivieren, Größe
    • Position festlegen: oben / links / rechts).
  • Flags „Ist Überschrift im Dropdown-Menü“ und „Ist Spaltentrenner im Dropdown-
    Menü“
    pro Menüpunkt; reiner Spaltentrenner zeigt keinen sichtbaren Inhalt an, sondern
    löst lediglich einen CSS-Spaltenumbruch aus.
  • „Hat mehrere Spalten (Legacy)“ auf Menüpunkte der obersten Ebene beschränkt.
  • Überarbeitete vertikale Zentrierung von Menüpunkten der obersten Ebene (flex statt
    display: table-cell) – behebt den Überlauf bei der Schaltflächenhöhe.

Farben / Farbverläufe

  • Basis-Farbverlaufspalette (Abschnitt „Farben“) – 4 Plätze mit benutzerdefiniertem
    Farbwähler (Einfarbig / Linear / Radial + Hex-Farbeingaben + Winkel-Schieberegler).
    Ausgegeben als CSS-Variablen --wsg1..4.
  • Die Farbverläufe der Palette sind auch im Block-Editor als
    Farbverlaufsvoreinstellungen und als Farbpaletteneinträge mit CSS-Klassen-
    Hijack registriert – Farbverläufe können in jedem Block-Farbwähler (Text,
    Hintergrund, Rahmen) ausgewählt werden und werden, wo
    möglich, über background-clip: text gerendert.
  • Schaltflächen, Überschriften, Links: Farbverläufe können über denselben Farbwähler überschrieben werden.
  • Fokus-Stile: globale, nur über die Tastatur aktivierbare :focus-visible-Umrandung mit
    konfigurierbarer Akzentfarbe (Abschnitt „Schaltflächen und Formulare“).

i18n

  • Strings der „Versandkostenfrei“-Leiste für de_DE (du) und
    de_DE_formal (Sie) übersetzt.
  • Neu übersetzte Strings: Richtung des mobilen Menüs, Farbverläufe,
    Layoutoptionen für die Kopfzeile, umrahmte Kopfzeile, Unschärfe, Filter-Schaltfläche, Sortieren und Filtern,
    Farbe des Hamburger-Symbols.

Struktur

  • Anzeigename in LX1 umbenannt (Slug + Textdomain bleiben delucks-seo,
    um die Kompatibilität mit Updates des SEO-Plugins zu gewährleisten – das Theme ist davon nicht betroffen).
  • Plugin-i18n: Dual-Load-Muster, um zu beheben, dass leere w.org-Sprachpakete
    die gebündelten Übersetzungen überschreiben.
  • Zahlreiche Korrekturen von Tippfehlern, Entfernung von totem Code, Bereinigung der Kommentare.
  • Diverse Code-Aktualisierungen vorgenommen
  • Ausrichtungsfehler bei aktiviertem Blocksatz korrigiert
  • WooCommerce: Kategorie-Beschreibungs-Bug gelöst
  • Footer: Move to top nun auch mit Aria Label zur Barrierefreiheit
  • WooCommerce: Benutzerregistrierung und Anmeldung in zwei Spalten auf Desktop-Auflösung
  • WooCommerce: Visuelle Fehlerbehebungen für Kontrollkästchen
  • WooCommerce: Link zum Entfernen des Frontend-Profils für die DSGVO hinzugefügt
  • Optimierungen der Barrierefreiheit für das Hamburger-Menü und das Warenkorb-Symbol
  • Veralteten Code aufgeräumt