IDF Woo Addons erweitert WooCommerce-Produkte um zusätzliche Eingabefelder, die die Kundschaft auf der Produktseite ausfüllt. Die Angaben landen im Warenkorb und an der Bestellung und werden in Admin, E-Mails, Bestellbestätigung und unter „Mein Konto“ angezeigt.
Felder werden in wiederverwendbaren Gruppen gepflegt und Produkten zugewiesen. Feldtypen: Text, mehrzeiliger Text, Zahl, Auswahl, Checkbox, Datei-/Bild-Upload und Wunschtermin (Datum + Uhrzeit), je Feld mit optionalem Aufpreis. HPOS- und Block-Checkout-kompatibel.
Changelog
v0.29.0
Hinzugefügt
[idf_wa_saved]zeigt bei leerer Merkliste die Zeile „Keine gemerkten Produkte", statt nichts auszugeben.leer="..."ändert den Text,leer=""blendet die leere Liste ganz aus.- Attribut
titel="ja"am Shortcode: bringt die Überschrift „Für später gemerkt (Anzahl)" zurück.
Geändert
- Der Shortcode
[idf_wa_saved]bringt keine Überschrift mehr mit, die setzt der Builder (Joerg, 13.09.2026). Die automatische Ausgabe unter dem klassischen Warenkorb behält ihre Überschrift. - Steht der Shortcode im Inhalt der Warenkorb-Seite, entfällt die automatische Ausgabe ganz, auch die unter der Warenkorb-Tabelle.
Behoben
- Die Merkliste stand auf Avada-Warenkorbseiten zwischen den Cross-Sell-Karten. Der
the_content-Fallback griff beim ersten Filteraufruf der Seite, und Avada ruftthe_contentfür jede Produktkarte auf. Er hängt die Liste jetzt nur noch an den Inhalt der Warenkorb-Seite selbst.
v0.28.1
Behoben
- Eine gewählte Größe sperrte die Farbe. In 0.28.0 hing das Ausgrauen noch an allen Achsen: War S gewählt, war Coral gesperrt, weil es Coral/S nicht mehr gibt. Wer Coral wollte, musste erst S abwählen, und das Zurücksetzen der Größe kam nie zum Zug (im Frontend nachgemessen am PRO Wear T-Shirt light 0317 Damen). Ausgeblendet und ausgegraut wird jetzt nur nach den Achsen darüber: Coral bleibt wählbar, beim Wechsel auf Coral fällt S heraus.
v0.28.0
Geändert
- Ausgelaufene Kombinationen verschwinden aus der Auswahl, statt nur ausgegraut zu sein (apps-v2 #1100, Joerg 11.09.2026: „Ausgelaufene Varianten verschwinden im Shop und sind nicht mehr vorbestellbar"). Der Bestands-Sync schaltet ausgelaufene Variationen ohne Bestand ab (toni-tool v0.39.0). Die Verfügbarkeitsmatrix blendet jetzt jede Auswahl aus, zu der es keine aktive Variation gibt: Ist Coral/S abgeschaltet, fehlt in Coral die Größe S. Gibt es die Variation, lässt sie sich aber gerade nicht bestellen, bleibt die Auswahl wie bisher ausgegraut und durchgestrichen.
- Ausgeblendet wird von oben nach unten. Ob eine Auswahl fehlt, hängt nur an den Achsen darüber: In Coral fehlt S, aber Coral verschwindet nicht, weil S gewählt ist, sondern erst, wenn Coral keine aktive Variation mehr hat. Eine gewählte Größe, die es in der gewählten Farbe nicht gibt (etwa aus der Vorauswahl), wird zurückgesetzt.
- Die Matrix kommt per
wc-ajaxstatt im Seiten-HTML (?wc-ajax=idf_wa_matrix). WP Rocket liefert Produktseiten aus dem Cache; eine eben abgeschaltete Kombination hätte dort bis zum nächsten Leeren als wählbar gestanden und ins Leere geführt. Vor dem Formular steht nur noch eine leere Marke mit der Produkt-ID. Der Endpunkt antwortet nur für veröffentlichte variable Produkte über der AJAX-Schwelle.
Behoben
- Der Matrix-Cache hing nur an Bestandsänderungen und am Speichern im Backend. Änderungen über die CRUD-Objekte (MCP-Adapter, Bestands-Sync) an Status oder Lieferrückstand einer Variation verwarfen ihn nicht verlässlich. Er verfällt jetzt auch bei
woocommerce_new_product_variation,woocommerce_update_product_variation,woocommerce_before_delete_product_variation,woocommerce_trash_product_variationundwoocommerce_variation_set_stock_status.
v0.27.2
Behoben
- Gesperrte Größen waren per Tastatur weiter auslösbar.
pointer-events: nonehält nur die Maus auf; Avadas Knöpfe sind Links mittabindex="0"und ließen sich mit Tab und Enter trotzdem wählen - also genau der Weg ins Leere, den die Sperre verhindern soll. Gesperrte Knöpfe bekommen jetzttabindex="-1"und fallen aus der Tab-Reihenfolge; wird die Kombination wieder bestellbar, kommen sie zurück. Dazucursor: not-allowed.
v0.27.1
Behoben
- Die Sperre griff beim Klick auf ein Avada-Farbfeld nicht. Avada ersetzt die Auswahl-Dropdowns durch eigene Knöpfe und setzt den Wert, ohne ein
changeauf dem<select>auszulösen (im Frontend nachgemessen) - der Handler lief also nur, wenn jemand das versteckte Dropdown selbst bediente. Die Sperre hängt jetzt zusätzlich am Klick auf die Knöpfe und an den WooCommerce-Ereignissenfound_variation,reset_data,update_variation_valuesundcheck_variations, und sie läuft mit 30 ms Abstand, damit Avada und WooCommerce vorher fertig sind. Dazu ein zweiter Durchlauf nach 400 ms für Layouts, die die Knöpfe verzögert aufbauen.
v0.27.0
Hinzugefügt
- Nicht bestellbare Farb-/Größen-Kombinationen sind gesperrt (apps-v2 #1091, Joerg 10.09.2026: „Es ist frustrierend für den Nutzer, Produkte zu sehen, die er nicht mehr bestellen kann"). Wählt die Kundschaft eine Farbe, sind die Größen ausgegraut und durchgestrichen, die es in dieser Farbe nicht mehr gibt - sie lassen sich nicht mehr anklicken.
- Warum das nötig war: WooCommerce legt die Variationsdaten nur bis 30 Variationen ins HTML und graut nicht existierende Kombinationen dann selbst aus. Darüber schaltet es auf AJAX um; der Browser kennt die Matrix nicht mehr, jeder Knopf bleibt klickbar, und eine Kombination ohne kaufbare Variation endet ohne Preis und ohne Erklärung. Die PRO-Wear-Produkte haben 120 bis 215 Variationen. Eine Variation zu löschen oder zu deaktivieren hilft dagegen nicht: Die Auswahlknöpfe kommen aus den Attributwerten des Produkts, „S" bleibt in der Liste, solange irgendeine Farbe ein S hat.
- Schlank statt vollständig: ausgegeben wird je Variation nur die Attributkombination und ein Flag „bestellbar", nicht der ganze Variationsdatensatz (bei 215 Variationen mehrere hundert KB je Seitenaufruf). Die Liste liegt als Transient und wird verworfen, sobald eine Variation gespeichert wird oder sich ein Bestand ändert.
- Bestellbar heißt kaufbar, nicht vorrätig. Eine leere Variante mit Zulauftermin bleibt wählbar, weil „wieder verfügbar ab 21.09." eine nützliche Auskunft ist. Gesperrt wird nur, was sich wirklich nicht in den Warenkorb legen lässt. Deaktivierte Variationen stehen gar nicht erst in der Liste.
- Neue Datei
includes/class-varianten-matrix.php; bis 30 Variationen hält sich das Plugin heraus.
v0.26.0
Geändert
- Auslaufware sagt es selbst, statt zu verschwinden (apps-v2 #1090, Befund Joerg 10.09.2026: „Ich kann im Shop aber S auswählen und es kommt dann nur kein Preis"). Bis 0.25.0 hat der Bestands-Sync eine ausgelaufene Variation ohne Bestand abgeschaltet. Bei einem Produkt mit 130 Variationen lädt WooCommerce die Variationen aber per AJAX statt sie ins HTML zu legen; der Browser kennt die Verfügbarkeitsmatrix dann nicht und kann die Größe nicht ausgrauen. Der Knopf blieb klickbar und führte ins Leere - kein Preis, keine Erklärung. Das war schlechter als der Zustand davor.
- Neu deshalb zwei Texte statt einer Abschaltung. Auslaufartikel mit Restbestand (Status 900, 905, 910) stehen gelb als „Nur noch 129 verfügbar" da, unabhängig von der Schwelle - auch 644 Stück sind endlich, und wer für ein Team plant, kann in vier Wochen nicht nachbestellen (Entscheidung Joerg: „nur noch … verfügbar, reicht sicher"). Ohne Bestand steht dort rot „Nicht mehr lieferbar" statt „Derzeit nicht lieferbar"; „derzeit" verspricht Nachschub, den es nicht gibt. Denselben Text nimmt auch der WooCommerce-Verfügbarkeitstext.
- Die Codes stehen in
Idf_Woo_Addons_Bestand::AUSLAUF_CODES. Ein Zulaufdatum ändert daran nichts: Bei Auslaufware wäre es ein Versprechen ohne Deckung.
v0.25.0
Hinzugefügt
- Vierter Zustand der Lagerampel: „Auf Anfrage lieferbar" (apps-v2 #1086, Entscheidung Joerg 09.09.2026). Meldet der Lieferant für eine Variante den Artikelstatus 901 („manuelle Beschaffung"), ist kein Bestand da und nennt er auch keinen Zulauftermin, steht dort blau „Auf Anfrage lieferbar" statt rot „Derzeit nicht lieferbar" - denn bestellbar ist die Ware, sie liegt nur nirgends. Der Button heißt dann „Auf Anfrage bestellen", der WooCommerce-Verfügbarkeitstext „Lieferbar auf Anfrage". Ein bekanntes Zulaufdatum sticht den neuen Zustand: ein Termin sagt mehr als die Einladung zu fragen.
- Gelesen wird das Variations-Meta
_idf_artikel_status, das der MCP-Adapter ab 3.44.0 überwc-update-variationschreibt; welche Codes „auf Bestellung" heißen, steht inIdf_Woo_Addons_Bestand::ANFRAGE_CODES. Die Auslauf-Codes 900, 905 und 910 stehen bewusst nicht darin: dort beschafft niemand mehr nach, und die Variation wird vom Bestands-Sync abgeschaltet, sobald der letzte Bestand weg ist. - Ohne das Meta ändert sich nichts - eine Seite ohne Bestands-Sync sieht die Ampel wie bisher.
Doku
- Die Lagerampel steht jetzt im README (vier Zustände, Herkunft der Daten, Schwelle, Abgrenzung zum produktweiten Anfrage-Modus) und
class-bestand.phpin der Dateiliste vonARCHITECTURE.md; beides fehlte seit v0.23.0.
v0.24.1
Behoben
- Ohne Daten blieb der Farbpunkt stehen (Joerg, 07.09.2026: „Wenn keine Daten vorliegen, die gesamte Zeile ausblenden. Aktuell bleibt der Punkt stehen"). Die Zeile trug zwar
hidden, aber das eigenedisplay: flexder Klasse stach die Browser-Regel fürhidden, und die leere Zeile zeigte ihren Punkt. Jetzt giltdisplay: none, sobaldhiddengesetzt ist: vor der Variantenwahl, nach dem Zurücksetzen und bei Varianten ohne verwalteten Bestand.
v0.24.0
Geändert
- Die Lagerampel sagt, wann geprüft wurde (#15). Hinter dem Ampel-Text steht in normaler Schriftstärke „(geprüft: 07.09.2026, 19:26)", aus dem Produkt-Meta
_idf_bestand_geprueft, das der Bestands-Sync der IDF-Apps über den MCP-Adapter je Produkt und Lauf schreibt; in der Zeitzone der Website. Ohne das Meta kein Zusatz: ein Produkt ohne Sync behauptet keine Prüfung. - Der rote Text mit Datum heißt „Variante ab 21.09.2026 verfügbar" statt „Nicht auf Lager, wieder verfügbar ab 21.09.2026" (Joerg, 07.09.2026). Ohne Datum bleibt „Derzeit nicht lieferbar".
v0.23.2
Behoben
- Der Button „Vorbestellen" kam nur mit Lagerampel. Das Skript, das ihn bei der Variantenwahl umbenennt, lief nur, wenn die Zeile gerendert war; ohne Shortcode und mit ausgeschalteter automatischer Zeile blieb es bei „In den Warenkorb", obwohl die Verfügbarkeit schon „Vorbestellung, lieferbar ab …" sagte. Es läuft jetzt auf jeder Produktseite.
v0.23.1
Behoben
- Die Lagerampel zeigte keine Zahl, wenn die shopweite Bestandsverwaltung (WooCommerce, Einstellungen, Produkte, Bestand) aus ist: ist dann für jede Variation false, obwohl der Sync je Variation eine Menge pflegt. Gelesen wird jetzt die gespeicherte Menge selbst; ohne Menge bleibt es bei der Statusaussage (gemessen am 07.09.2026 auf ihre-ideenfabrik.de, Variation 720670 mit 832 Stück und leerer Ampel).
v0.23.0
Hinzugefügt
- Lagerampel je Variante (#14). Der Shortcode
[idf_wa_bestand]zeigt den Lagerbestand der gewählten Variante mit Farbe: über der Schwelle grün mit der Zahl („312 auf Lager"), darunter gelb („Nur noch 23 auf Lager"), bei null rot mit dem Datum des nächsten Wareneingangs („Nicht auf Lager, wieder verfügbar ab 19.10.2026") oder „Derzeit nicht lieferbar". Auf Wunsch erscheint die Zeile ohne Shortcode automatisch unter dem Preis (Einstellungen, ab Werk aus). Die Schwelle steht unter Einstellungen (Vorgabe 50), je Produkt im Reiter „Addons" und als Attributschwelleam Shortcode. Dieselbe Brücke wie die EAN-Anzeige: Rohdaten in den Variationsdaten, Zustand und Text bei jeder Auswahl im Browser, Texte aus PHP. - WooCommerce-Texte mit Datum. Ist ein Wareneingang bekannt (Variations-Meta
_idf_zulauf_datum, geschrieben vom IDF MCP-Adapter aus dem Bestands-Sync der Apps), sagt „Nicht vorrätig" jetzt „Wieder verfügbar ab 19.10.2026" und der Lieferrückstand „Vorbestellung, lieferbar ab 19.10.2026"; der Warenkorb-Button einer vorbestellbaren Variante heißt „Vorbestellen". - Hilfe-Seite: Abschnitt 8 zur Lagerampel. Die DSGVO-Seite bleibt, wie sie ist: die Ampel liest nur, was WooCommerce ohnehin am Produkt führt.
v0.22.0
Hinzugefügt
- Pflichtseite DSGVO als eigener Reiter (
manage_options, rein lesend). Sie benennt die verarbeiteten Daten mit konkretem Speicherort - Addon-Eingaben an der Bestellposition, hochgeladene Kundendateien im gesperrten Verzeichnis, Zwischenspeicher laufender Uploads, Merkliste, IP-bezogener Upload-Zähler -, stellt fest, dass nichts an Dritte geht, liefert einen Textvorschlag für die Datenschutzerklärung zum Kopieren und listet auf, was der Betreiber selbst festlegen muss. Damit sind die fünf Pflicht-Admin-Seiten vollständig. - Hilfe-Seite: Abschnitt zum Shortcode
[idf_wa_ean]- Zweck, die Attributelabelundclass, Verhalten bei variablen und einfachen Produkten und woher die Werte kommen.
Behoben
_load_textdomain_just_in_time-Notice bei jedem Seitenaufruf. Der Konstruktor der Anfrage-Zahlart hat Beschriftungen übersetzt, und WooCommerce baut die Zahlarten über die Blocks-Integration auf praktisch jedem Request auf - auch bei Sitemaps und REST-Aufrufen. Damit lief das Laden der Übersetzungen vorinit, und WordPress schrieb ein bis zwei Notices pro Aufruf ins Log; die eigentliche Fehlersuche in derdebug.logist daran gescheitert. Der Konstruktor übersetzt jetzt nichts mehr: Beschriftungen entstehen in den Gettern, die Formularfelder beim ersten Zugriff, die Einstellungen werden roh gelesen.
v0.21.0
Hinzugefügt
- Shortcode
[idf_wa_ean]: die EAN der gewählten Variation im Frontend. Nach der Auswahl von Farbe und Größe steht die EAN dieser Variante da, beim Zurücksetzen verschwindet sie wieder. Bei einfachen Produkten steht sie sofort; hat ein Produkt keine EAN, gibt der Shortcode gar nichts aus statt einer leeren Beschriftung. Beschriftung überlabel, eigene CSS-Klasse überclass. - Der Wert steckt jetzt in den Variationsdaten (
woocommerce_available_variation). Das ist der eigentliche Kern: WooCommerce liefert GTIN, UPC, EAN und ISBN nicht mit den Variationsdaten aus, die es an die Produktseite schickt, und zeigt sie im Frontend nur in der Attributtabelle des Eltern-Produkts. Ohne den Wert im JSON kann kein Theme und kein JavaScript ihn nach der Auswahl anzeigen - auch Avada nicht, das dafür kein Element mitbringt. - Vor der Auswahl bleibt die Zeile bei variablen Produkten leer und unsichtbar. Eine EAN vom Eltern-Produkt wäre für jede Farbe und Größe dieselbe und damit falsch.
- Kein eigenes CSS für diese Zeile: sie erbt die Typografie des Themes und wird über den Layout-Builder platziert.
v0.20.1
Behoben
- Zeichenabstand ohne Einheit wurde in Pixeln gelesen. Gültiges CSS, aber der falsche Standard: Zeichenabstand gibt man üblicherweise relativ zur Schriftgröße an, damit er mitskaliert -
0.05pxist praktisch wirkungslos, gemeint ist0.05em. Ohne Einheit gilt dort jetztem; bei Größen und Abständen bleibt es beipx. Die Standard-Einheit steht je Feld in der Feldliste.
v0.20.0
Behoben
- Ein Wert ohne Einheit verschwand wortlos. Der Zeichenabstand (und jedes andere Größen-Feld) stand nach dem Speichern wieder auf „Standard", ohne dass irgendwo stand, warum. Zwei Änderungen: eine Zahl ohne Einheit gilt jetzt als Pixel, und was danach immer noch nicht zu lesen ist, wird nach dem Speichern benannt - mit Feldname und eingegebenem Wert - statt kommentarlos zu verschwinden.
- Die Eingabefelder in den Matrizen waren unnötig schmal. Sie hingen an der WordPress-Klasse
small-text(50px), obwohl die Tabellenzelle breit ist. Sie nutzen die Zelle jetzt aus.
Hinweis
Der Speicherweg selbst war in Ordnung - geprüft mit einem Test, der ein echtes Formular durch design_post() und die Feldprüfung schickt. Genau dieser Test hätte das stille Verwerfen früher zeigen müssen; er prüft es jetzt mit.
v0.19.0
Hinzugefügt
- Schrift-Matrix. Zeilen sind die acht Textstellen (Feldblock, Feld-Überschrift, Hilfetext, Auswahl-Option, Aufpreis, Gesamtpreis-Beschriftung, -Betrag, -Zusatzzeile), Spalten die vier Eigenschaften: Größe, Stärke, Zeichenabstand und Schreibweise - dieselben, die ein Theme je Textstelle anbietet. Zeichenabstand und Schreibweise gab es bisher gar nicht. Wie bei den Farben entsteht die Matrix aus zwei Listen, damit keine Kombination fehlen kann; ein Test prüft das.
Geändert
- Der Zustand „Mauskontakt" heißt in der Farb-Matrix jetzt „Hover".
- Die Matrizen lesen sich wieder in der Schriftgröße des übrigen Panels (14px statt der 13px von
widefat), und die Farbquadrate haben wieder ihre normale Größe. Es ist Platz genug. - Die Abschnitte „Aufpreise" und die einzelnen Schriftgrößen-Felder sind in der Schrift-Matrix aufgegangen. Gespeicherte Werte bleiben erhalten - die Schlüssel sind dieselben.
Behoben
- Zeilenenden im Repo vereinheitlicht. Sechs Dateien waren im Lauf dieser Sitzung von LF auf CRLF gekippt, weil die Prüfung darauf (
grep -c $'\r') auf diesem System jede Zeile als Treffer meldet und den Fehler nie angezeigt hat. Alles wieder LF, geprüft mit einem Test, der die Bytes zählt statt zu greppen.
v0.18.0
Geändert
- Das Design hat einen eigenen Reiter. Die Einstellungsseite war mit rund dreißig Design-Zeilen zugestellt; jetzt stehen dort nur noch die funktionalen Einstellungen, das Aussehen steht unter „Woo Addons → Design".
- Die Farben der Auswahl-Optionen stehen als Matrix: Zeilen sind die Zustände (Normal, Mauskontakt, Gewählt), Spalten die Eigenschaften (Fläche, Rahmen, Schrift, Aufpreis). Alle zwölf Kombinationen entstehen aus einer Zustands- und einer Spaltenliste und können deshalb nicht mehr einzeln fehlen. Genau das war das Muster hinter drei Nachforderungen in Folge: erst fehlte die Hover-Schriftfarbe, dann die Hover-Rahmenfarbe, dann die Hover-Aufpreisfarbe - einer Liste sieht man nicht an, welche Kombination es nicht gibt.
Hinzugefügt
- Farbe des Aufpreises bei Mauskontakt und Rahmenfarbe bei Mauskontakt - die beiden Zellen, die in der Liste noch gefehlt haben.
- „Durchsichtig" als eigene Farbwahl (Quadrat mit Schrägstrich) bei allen Flächen und Rahmen.
Behoben
- Eine Fläche ließ sich nicht durchsichtig stellen. Die Deckkraft wirkte nur zusammen mit einer gewählten Farbe; stand die Farbe auf „Standard", kam gar nichts ins CSS und der Standardwert blieb sichtbar - Untergrund und Rahmen der Gesamtpreis-Zeile blieben also stehen, obwohl im Admin transparent eingestellt war. Deckkraft 0 ergibt jetzt auch ohne gewählte Farbe „durchsichtig", und daneben gibt es die ausdrückliche Wahl.
- Ein Speichern der Einstellungen setzt das Design nicht mehr zurück (getrennte Formulare, gemeinsame Option).
v0.17.0
Behoben
- Design-Änderungen wirkten nicht. Das Design-Set steht als Inline-CSS im Quelltext der Produktseite - liegt die Seite im WP-Rocket-Cache, ändert eine neue Einstellung dort gar nichts: speichern, neu laden, alter Stand. Beim Speichern wird der Seiten-Cache jetzt selbst geleert (WP Rocket, W3 Total Cache, WP Super Cache, LiteSpeed; weitere über die Action
idf/woo-addons/settings_saved). Das erklärte auch, warum der abgeschaltete Haken und die Abstände scheinbar ohne Wirkung blieben. - Die gewählte Option wurde von allein fett. Die Schriftstärke stand fest im Stylesheet. Sie ist jetzt eine Einstellung und standardmäßig leer - gewählt heißt also nicht mehr automatisch fett.
Hinzugefügt
- Schriftfarbe bei Mauskontakt für die Auswahl-Optionen.
- Farbe des Hakens einstellbar. Bisher war er in der Akzentfarbe und stach aus einem andersfarbigen Feld heraus.
- Innenabstand der Eingabefelder (Text, Zahl, Auswahl) einstellbar.
- Der Innenabstand einer Option wirkt jetzt auch in der Darstellung „Schlicht", nicht nur bei Karten und Kacheln.
Geändert
- Der Haken bzw. Punkt ist standardmäßig aus. Die ganze Zeile ist die Schaltfläche; bei der Checkliste also das ganze Feld. Wer ihn will, schaltet ihn unter „Auswahl-Optionen" wieder ein.
- Die Meldung nach dem Speichern sagt, dass der Seiten-Cache geleert wurde.
v0.16.0
Hinzugefügt
- Deckkraft je Flächenfarbe. Neben dem Farbwähler steht ein Prozentfeld; unter 100 wird aus dem Hex-Wert ein
rgba()-Wert. Betrifft Flächen, Options-Flächen, Rahmen und die Gesamtpreis-Zeile. - Hover-Farbe der Auswahl-Optionen als eigene Einstellung, dazu getrennte Flächen-, Rahmen- und Schriftfarben für den Normal- und den Auswahl-Zustand.
- Darstellung „Kacheln nebeneinander" und Haken bzw. Punkt ausblenden. Zusammen sehen Radiobuttons und Checkliste damit aus wie die Farb- und Größen-Auswahl des Produkts. Der Haken wird nicht entfernt, sondern nur unsichtbar - Tastatur und Screenreader kommen weiter an ihn heran.
- Aufpreise gestaltbar: Farbe normal und wenn gewählt, Schriftgröße, Schriftstärke.
- Gesamtpreis-Zeile gestaltbar: Innenabstand, Fläche, Rahmen sowie Schriftgröße und Farbe von Beschriftung, Betrag und Zusatzzeile.
- Position des Hilfetexts wählbar: unter der Überschrift und damit über dem Feld (neuer Standard) oder wie bisher unter dem Feld.
- Innenabstand einer Option einstellbar, ein bis vier Werte wie im CSS.
Geändert
- Das Design-Set steht jetzt als eine Feldliste in
Idf_Woo_Addons_Design::fields(). Aus ihr kommen Standardwerte, Oberfläche, Prüfung und CSS. Bisher lagen diese vier Dinge an vier Stellen, und jedes neue Stellrad musste in alle vier eingetragen werden. - Die Einstellungsseite gliedert das Design in vier Abschnitte: Grundlage, Auswahl-Optionen, Aufpreise, Gesamtpreis-Zeile.
- Alle Größen- und Abstandsfelder nehmen Werte samt Einheit; der Innenabstand auch mehrere (
12px 18px). - Die CSS-Klasse der Darstellung „Karten mit Preis am rechten Rand" heißt
idf-wa-opt--karte-preisstattidf-wa-opt--karte_preis. Nur wichtig, wenn sie in „Eigenes CSS" angesprochen wurde. - Ein leeres Zahlenfeld heißt jetzt „Standard" und nicht mehr „0" - eine getippte 0 bleibt eine 0.
v0.15.0
Behoben
- Die Theme-Farben waren unsichtbar. Die Farbreihe wurde gerendert, aber die Einstellungsseite hat
assets/admin.cssnie geladen - die Quadrate sind Spans mit fester Groesse, die Radio-Knoepfe darunter stehen aufscreen-reader-text. Ohne das Stylesheet war die Reihe damit nicht unformatiert, sondern schlicht nicht da. Die Seite laedt ihr Stylesheet jetzt selbst.
Geaendert
- Schriftgroesse ist ein freies Feld. Wert samt Einheit, so wie man ihn auch ins CSS schreiben wuerde:
16px,1.2rem,0.9em,110%, dazupt,vw,vh,ch. Ein Komma gilt als Dezimaltrennzeichen. Was nicht in dieses Muster passt, wird verworfen und der Standard gilt. Die bisherige Auswahl aus Theme-Groessen plus Zahlenfeld und Einheiten-Dropdown ist weg.
Entfernt
- Einstellung „Schriftart". Die angebotenen Schriften kamen aus der Theme-Palette und deckten sich nicht mit dem, was in den Theme-Einstellungen steht - die Auswahl war damit mehr Rueckfrage als Hilfe. Der Feldblock erbt die Schrift wieder von seiner Umgebung.
v0.14.1
Behoben
- Die Schriftart des Feldblocks lief ueber
--idf-wa-font-family: inherit. Ein CSS-Schluesselwort in einer Custom Property ist das Schluesselwort selbst und damit ungueltig - das Ergebnis stimmte nur, weil die ungueltige Deklaration auf den geerbten Wert zurueckfaellt. Die Schriftart kommt jetzt ueber den Fallback invar(), ohne diesen Umweg.
v0.14.0
Hinzugefügt
- Farbauswahl aus dem Theme, wie im Attribute-Filter: je Farbe eine Reihe Quadrate mit den Farben des Themes (bei Avada die Global Colors), davor „Standard", dahinter der WordPress-Farbwähler für eine eigene Farbe. Gespeichert wird die Kennung
theme:<slug>, nicht der Wert - eine im Theme geänderte Hausfarbe zieht damit von selbst nach. Die zwölf WordPress-Standardfarben werden über Kennung und Wert aussortiert. - Textfarbe (hervorgehoben) als eigene Einstellung: gilt für die Beschriftung der gewählten Option, den Preis in der Karten-Darstellung und den Betrag in der Gesamtpreis-Zeile. Standard ist weiterhin die normale Textfarbe.
- Schriftgröße mit Einheit statt nur px: „Standard", eine Schriftgröße des Themes oder ein eigener Wert in
px,rem,emoder%. - Schriftart aus den Schriftarten des Themes wählbar; Standard bleibt die Schrift der Umgebung.
Geändert
- Farben werden nicht mehr als eingefrorene Hex-Kopie gespeichert. „Standard" heißt jetzt wirklich leer, und der Standardwert steht nur noch im Stylesheet - vorher lag er zusätzlich in den Einstellungen und wäre bei einer Änderung am Stylesheet auseinandergelaufen.
- Eckenradius und Options-Abstand gehen bis 60px statt 40px.
Sicherheit
- Werte aus der Theme-Palette (Schriftgröße, Schriftart) werden vor der Ausgabe geprüft: alles, womit sich die CSS-Deklaration verlassen ließe (
{,},;, Kommentare,url(),@import), führt dazu, dass der Wert verworfen wird und der Standard gilt.
v0.13.0
Hinzugefügt
- Gesamtpreis auf der Produktseite. Über dem Warenkorb-Button steht jetzt eine Zeile mit Produktpreis plus gewählten Aufpreisen mal Menge, darunter die Summe der Aufpreise. Sie rechnet im Browser mit, ohne Neuladen, und erscheint nur bei Produkten, deren Addons überhaupt einen Aufpreis tragen. Bei variablen Produkten kommt der Grundpreis aus
show_variation; ohne gewählte Variante bleibt sie aus. Abschaltbar unter Einstellungen, Beschriftung dort änderbar. - Design-Set unter Einstellungen. Neuer Abschnitt „Design der Addon-Felder": Darstellung der Auswahl-Optionen (schlicht, Karten, Karten mit Preis am rechten Rand), Akzent-, Text-, Rahmen- und Flächenfarbe, Eckenradius, Abstand zwischen den Optionen, Schriftgröße. Gebaut mit WordPress-Bausteinen (
form-table, Core-Color-Picker). Die Werte gehen als CSS-Custom-Properties auf den Feldblock; „Eigenes CSS" bleibt die letzte Instanz. - Reiter „Deinstallieren". Listet auf, was beim Löschen des Plugins entfernt würde, und gibt es frei.
Geändert
- Radiobuttons und Checkliste stehen standardmäßig als Karten mit Rahmen: ganze Zeile klickbar, gewählte Option an Rahmen und Fläche erkennbar, Hover- und Fokus-Zustand. Die bisherige nackte Darstellung gibt es weiter als „Schlicht".
- Beim Löschen des Plugins bleiben die Daten jetzt erhalten. Bisher hat
uninstall.phpbedingungslos alles entfernt - Addon-Gruppen, Produktzuweisungen, Merklisten und das komplette Upload-Verzeichnis mit den Kundendateien. Entfernt wird nur noch, wenn es auf dem Reiter „Deinstallieren" ausdrücklich freigegeben ist. - Schriftgröße und Options-Abstand des Feldblocks sind keine festen Werte im Stylesheet mehr, sondern Custom-Properties mit Standardwert.
v0.12.0
Behoben
- Aufpreise landeten nicht im Warenkorb-Preis. Der Aufschlag lief nur beim ersten Durchlauf einer Warenkorb-Berechnung (
did_action-Sperre). Beim Add-to-Cart rechnet WooCommerce aber oft schon beim Laden der Session; der Lauf, der die Summen in die Session schreibt, war dann der zweite und wurde übersprungen. Auf einer mit Avada gebauten Warenkorb-Seite rechnet nichts mehr nach, also blieb der Preis ohne Aufpreis stehen. Der Aufschlag ist jetzt idempotent - er merkt sich den Grundpreis der Zeile und läuft bei jeder Berechnung. - Der Aufschlag hängt zusätzlich an
woocommerce_cart_loaded_from_session, damit Warenkorb-Seiten aus einem Page-Builder ohne eigene Neuberechnung den richtigen Zeilenpreis zeigen. - Wurde das Cart-Produktobjekt zwischendurch neu aus der Session aufgebaut (Store API, Block-Checkout), fiel der Aufpreis bisher wieder weg. Er wird jetzt neu gesetzt, ohne sich zu verdoppeln.
Hinzugefügt
- Feldtyp „Auswahl (Radiobuttons)": dieselben Optionen wie das Dropdown, aber offen sichtbar untereinander samt Aufpreis - der Kunde vergleicht ohne Klick.
- Feldtyp „Mehrfachauswahl (Checkliste)": mehrere Optionen gleichzeitig wählbar, die Aufpreise der angehakten Optionen addieren sich. Die gewählten Labels stehen als Aufzählung im Warenkorb, an der Bestellposition und in den Bestell-E-Mails.
- Beide Typen nutzen dieselbe Options-Pflege wie das Dropdown (eine Zeile je Option,
Label | Aufpreis). Ein Wechsel des Feldtyps behält die Optionen.
Geändert
- Pflichtfeld-Meldungen der Auswahl-Typen sagen jetzt, was zu tun ist („eine Option wählen", „mindestens eine Option wählen") statt „ausfüllen".
- Der Feldtyp „Checkbox" heißt im Editor „Checkbox (einzeln)" - zur Abgrenzung von der neuen Checkliste. Bestehende Felder sind nicht betroffen, die Kennung bleibt
checkbox.
v0.11.1
Behoben
- Die Reiterleiste auf der Gruppen-Liste und im Gruppen-Editor stand ueber der Ueberschrift statt darunter - sie hing an
all_admin_notices, und der Hook rendert oberhalb der<h1>. Dort sieht sie aus wie eine Systemmeldung. Sie haengt jetzt am Filterviews_edit-{cpt}(Liste) und an der Actionedit_form_top(Editor); beide laufen unterhalb des Seitenkopfs.
v0.11.0
Geändert
- Admin-Menü: ein Eintrag unter IDF Home statt eines eigenen Top-Level-Menüs mit vier Untereinträgen. Addon-Gruppen, Einstellungen und Hilfe sind jetzt Reiter auf der Übersicht.
- Der CPT „Addon-Gruppen" hängt sich nicht mehr per
show_in_menuins Plugin-Menü, sondern steht auffalseund ist ein Reiter. Ein Menü-Slug trägt dort nicht mehr: WordPress hängt CPT-Menüs nur an Top-Level-Slugs, das Untermenü wäre befüllt, aber nie gerendert worden - die Liste wäre lautlos verschwunden. - Gruppen-Liste und Gruppen-Editor bekommen ihre Reiterleiste über
all_admin_notices, sonst wären die WordPress-Standardseiten eine Sackgasse. admin_menuhängt jetzt auf Priorität 20 statt 9. Die 9 war nur nötig, solange der CPT sich pershow_in_menueinhängte.- Ohne IDF Home bleibt das eigene Top-Level-Menü als Rückfalloption erhalten, mit derselben Oberfläche.
- Alle bisherigen Seiten-URLs bleiben gültig.
v0.10.0
Hinzugefügt
- Eigener Bestellstatus „Angefragt". Terminanfragen erscheinen in der Bestellliste und im Kundenkonto jetzt als klarer Status „Angefragt" statt als „Bezahlung ausstehend" oder „Wartend". Der Status wird in beiden Checkout-Wegen gesetzt (klassisch und Block-/Store-API); im Block-Checkout blieb die Anfrage bisher auf „Bezahlung ausstehend" hängen, weil die interne Anfrage-Zahlart dort nicht greift. Erkannt wird eine Anfrage an der Markierung bzw. an einem Anfrage-Produkt in der Bestellung; ein bereits weiterbearbeiteter Status wird nicht überschrieben.
- Beim Wechsel auf „Angefragt" gehen die gewohnten Benachrichtigungen raus: interne „Neue Bestellung"-Mail ans Team und eine Eingangsbestätigung an die Kundschaft (WooCommerce-Standardmails, gezielt ausgelöst).
Geändert
- Die interne Zahlart „Terminanfrage" legt die Bestellung jetzt als „Angefragt" an (bisher „Wartend"/on-hold).
v0.9.1
Behoben
- Merkliste erschien auf Builder-Warenkorb-Seiten nicht (z. B. Avada mit den Fusion-Woo-Elementen): Diese Seiten rendern die WooCommerce-Template- Hooks unter der Tabelle und auf der Leer-Ansicht nicht. Die Liste hängt sich jetzt per Fallback ans Ende des Seiteninhalts der Warenkorb-Seite, wenn die Hooks sie nicht ausgegeben haben (mit Schutz vor Doppel-Ausgabe).
Hinzugefügt
- Shortcode
[idf_wa_saved]: platziert die Merkliste an beliebiger Stelle (z. B. in einem Avada-Container auf der Warenkorb-Seite); der automatische Fallback unterdrückt sich dann selbst.
v0.9.0
Hinzugefügt
- „Für später merken" im Warenkorb (Merkliste wie im Amazon-Warenkorb): Jede Warenkorb-Position erhält einen Link „Für später merken" und wandert damit samt Addon-Angaben, Menge und Variante in die Liste „Für später gemerkt" unter dem Warenkorb. Von dort geht es per „In den Warenkorb" zurück oder per „Entfernen" ganz raus.
- Die Merkliste erscheint auch bei leerem Warenkorb, damit gemerkte Produkte nie in einer Sackgasse landen.
- Speicherung: eingeloggte Kundschaft dauerhaft im Konto (geräteübergreifend), Gäste in der WooCommerce-Session; beim Login wird die Gast-Merkliste ins Konto übernommen.
- Die Fehlermeldung des Mischverbots (Anfrage- vs. Kauf-Produkte) verweist jetzt auf „Für später merken" statt auf das Leeren des Warenkorbs.
- Neue Einstellung „Für später merken" (Standard: aktiv) unter Woo Addons -> Einstellungen; Hilfe-Seite entsprechend ergänzt.
Hinweise
- Gilt für den klassischen Warenkorb (Shortcode); der Block-Warenkorb zeigt die Merkliste nicht.
- Datei-Uploads in gemerkten Positionen unterliegen weiterhin der Aufräum-Frist für nicht bestellte Dateien; beim Zurücklegen werden fehlende Dateien mit Hinweis entfernt.
v0.8.0
Geändert
- Produktdaten-Reiter „Addons" neu aufgebaut. Die Gruppen stehen jetzt in einer eigenen, klar getrennten Liste (eine Zeile je Gruppe: Haken, Name, Feld-Anzahl, Link „bearbeiten") statt in WooCommerce-Formularzeilen. Zwei benannte Abschnitte: „Addon-Gruppen" oben, „Anfrage statt Kauf" unten.
- Zugewiesene Gruppen werden hervorgehoben, ein Zähler zeigt „x von y zugewiesen".
- Die Felder Button-Text und Anfrage-Hinweis erscheinen nur noch, wenn „Als Anfrage behandeln" aktiv ist.
- Beim Überfahren der Feld-Anzahl zeigt ein Tooltip die Feldnamen der Gruppe.
- Ab 8 Gruppen blendet sich ein Filterfeld über der Liste ein.
- Ist noch keine Gruppe vorhanden, führt ein Leerzustand mit Button direkt zum Anlegen der ersten Gruppe.
Behoben
- Zerrissene Zeilenumbrüche in der Gruppen-Liste. WooCommerce floatet im Produktdaten-Panel jedes
labelauf 150 px Breite; die Gruppen-Checkboxen liefen dadurch mitten im Namen um („Gebäude-Ansicht (1 / Feld) - bearbeiten"). Die Liste nutzt jetzt eigenes Markup mit gezieltem Reset. - Das Admin-CSS wurde auf der Produktmaske gar nicht geladen (nur auf der Gruppen-Seite). Styles und Skript werden jetzt auch für den Produkt-Screen eingebunden, die Inline-Styles im Panel sind entfallen.
v0.7.1
Hinzugefügt
- Der Anfrage-Hinweis erscheint jetzt auch im Warenkorb und im Checkout (dort direkt unter dem AGB-Text), nicht nur auf der Produktseite.
v0.7.0
Hinzugefügt
- Editierbarer Anfrage-Hinweis unter dem Button: Bei Anfrage-Produkten erscheint ein Hinweistext unter dem Add-to-Cart-Button (Standard: „Dieses Produkt wird als Anfrage versandt. Es findet keine Berechnung statt. …"). Global in „Woo Addons → Einstellungen" editierbar und je Produkt im Reiter „Addons" überschreibbar; einfache Formatierung (Fett, Link, Umbruch) erlaubt.
v0.6.0
Hinzugefügt
- Mehrfach-Upload je Datei-Feld (Option „Mehrere Dateien erlauben"): mehrere Dateien per Klick oder Drag & Drop, jede als einzeln entfernbarer Chip. Standard bleibt Einzeldatei.
- Hochgeladene Dateien werden an die Bestell-E-Mails angehängt (Team- Benachrichtigung und Kunden-Mails) - bisher stand nur der Dateiname in der Mail.
v0.5.0
Geändert
- Wunschtermin-Datum jetzt mit Flatpickr-Kalender (selbst-gehostet, kein CDN, DSGVO-sauber): schöner Kalender mit deutscher Beschriftung, echter Platzhalter „Termin auswählen" statt des nativen „tt.mm.jjjj", nur wählbare Tage im Buchungsfenster. Die Uhrzeit bleibt eine klare Slot-Auswahl. Flatpickr wird nur geladen, wenn tatsächlich ein Wunschtermin-Feld auf der Seite ist.
v0.4.0
Hinzugefügt
- Anfrage-Modus je Produkt (Reiter „Addons" → „Als Anfrage behandeln"): Für Termin-/Anfrage-Produkte wird nichts berechnet. Liegt so ein Produkt im Warenkorb, heißen die Buttons „Termin anfragen" / „Anfrage senden", alle anderen Zahlarten werden ausgeblendet, und die interne Zahlart „Terminanfrage" legt die Bestellung ohne Zahlung als „Wartend" an (mit Notiz + Markierung). Optionaler eigener Button-Text je Produkt. Anfrage- und Kauf-Produkte lassen sich nicht im selben Warenkorb mischen. Hinweis: Der Anfrage-Modus greift im klassischen Checkout; im Block-Checkout erscheint die Anfrage-Zahlart noch nicht (Block-Payment-Integration folgt).
v0.3.2
Behoben
- Klick auf das Datei-Upload-Feld öffnete keinen Dateidialog. Die Dropzone ist jetzt ein natives
<label>mit fokussierbarem Datei-Feld - der Klick öffnet den Dialog ohne JavaScript (JS nur noch für den eigentlichen Upload und Drag & Drop). Funktioniert damit auch, falls das Frontend-JS mal nicht lädt.
v0.3.1
Behoben
- Der „In den Warenkorb"-Button stand neben den Addon-Feldern, wenn das Theme (z. B. Avada) die Felder und den Button in denselben Flex-Container legt (
.fusion-button-wrapper). Der geteilte Container bricht jetzt um, sodass der Button unter den Feldern steht.
v0.3.0
Hinzugefügt
- IDF-Basis-Design: Felder, Selects, Textareas, Checkboxen und Dropzone im einheitlichen IDF-Look (Primär
#c8102e, neutrale Töne, Radius 0, 16 px) über--idf-wa-*-Tokens, gescoped auf.idf-wa-product-fields. Das Feld „Eigenes CSS" überschreibt damit bei Bedarf nur noch einzelne Tokens. - Kalender-Steuerung je Wunschtermin-Feld: Modus „nur Datum" oder „Datum + Uhrzeit"; Vorlauf (frühestens heute + N Tage) und Buchungsfenster (spätestens heute + N Tage); Uhrzeit-Fenster (von/bis) und Takt (z. B. 2-stündlich, nur 10-18 Uhr). Datum als rollierendes Fenster, Uhrzeit als Slot-Auswahl; serverseitig validiert.
v0.2.1
Behoben
- Frontend-Assets (CSS + JS) wurden auf Produktseiten nicht geladen, weil das Produkt bei
wp_enqueue_scriptsnoch nicht im globalen$productstand - jetzt überget_queried_object_id(). Dadurch griffen Dropzone-Styles, das Feld „Eigenes CSS" und der Klick-Upload nicht. Behoben. - Addon-Felder laufen jetzt als volle Block-Zeile (100 % Breite) und stehen nicht mehr neben dem „In den Warenkorb"-Button oder anderen Eingabefeldern.
- Upload-Icon auf feste 34 px begrenzt (SVG-Attribute), unabhängig vom CSS.
v0.2.0
Hinzugefügt
- Datei-Upload-Felder als Dropzone (gestrichelter Rahmen, Upload-Icon, dynamischer Hinweistext aus den erlaubten Typen) mit Klick, Tastatur und Drag & Drop statt des nackten Datei-Feldes.
- Einstellung „Eigenes CSS (Frontend)": shopweit im Admin pflegbares CSS, das nur auf Produktseiten mit Addons ausgegeben wird. Die Dropzone bringt dafür CSS-Variablen mit (
--idf-wa-dz-border,--idf-wa-dz-accent,--idf-wa-dz-radius,--idf-wa-dz-bg).
v0.1.0
Hinzugefügt
- Erste Version von IDF Woo Addons.
- Wiederverwendbare Addon-Gruppen als CPT
idf_addon_groupmit Repeater-Editor. - Feldtypen: Textfeld, mehrzeiliger Text, Zahl, Auswahl (Dropdown), Checkbox, Datei-/Bild-Upload, Wunschtermin (Datum + Uhrzeit).
- Pro Feld: Pflichtangabe und optionaler Aufpreis (Fixbetrag oder Prozent); Auswahl-Optionen mit eigenem Aufpreis.
- Zuweisung an Produkte über den Produktdaten-Reiter „Addons".
- Rendering im Add-to-Cart-Formular, serverseitige Validierung, getrennte Warenkorb-Zeilen bei unterschiedlichen Angaben, Anzeige im Warenkorb.
- Aufpreis serverseitig pro Stück über
woocommerce_before_calculate_totals. - HPOS-sichere Persistenz an der Bestellposition; Anzeige in Admin, E-Mails, Bestellbestätigung und „Mein Konto".
- Sicherer Datei-Upload per AJAX in ein gegen Direktzugriff geschütztes Verzeichnis; capability-geprüfter Download im Admin; Cron-Aufräumung verwaister Uploads.
- Block-Checkout-Kompatibilität: Anzeige über
item_dataund zusätzliche Store-API-Erweiterung (extensions.idf-woo-addons). - Deklaration der Kompatibilität mit HPOS (
custom_order_tables) und Block-Checkout (cart_checkout_blocks).