WooCommerce Checkbox-Custom-Field in Masse bearbeiten, ohne falsche Werte
Wenn Sie in WooCommerce ein Checkbox-Custom-Field von Produkten in Masse bearbeiten, muss der Wert, den BEAR schreibt, derselbe sein, den das zugehörige Plugin liest. Für Checkboxen gibt es keinen einheitlichen Standard: Ein Plugin speichert 1 und 0, ein anderes yes und no, ein drittes on oder gar nichts. Passen die Werte nicht zusammen, wirkt das Feld invertiert: Im Bearbeitungsbildschirm des Produkts ist es angehakt, in BEAR aber ausgeschaltet, und am Produkt ist es ausgeschaltet, sobald Sie es in BEAR einschalten. Dasselbe gilt für Select-Felder, die einen Wert speichern, den der Editor nie anzeigt. Im Folgenden: wie jedes Format gespeichert wird, wie Sie BEAR dazu bringen, genau dieses Format zu schreiben, und welches Werkzeug sich für einen Massenlauf eignet.
So speichern Plugins eine Checkbox
| Woher die Checkbox stammt | Angehakt | Nicht angehakt |
|---|---|---|
Die Formularfunktion woocommerce_wp_checkbox() von WooCommerce, die viele Plugins und Themes nutzen | yes | no oder leer, je nach Speichercode des Plugins |
| ACF Wahr / Falsch (True / False) und viele eigene Plugins | 1 | 0 |
| Eine einfache HTML-Checkbox, so gespeichert, wie sie gesendet wird | on | leer oder kein Key |
| Manche Plugins | true | false |
Um herauszufinden, welches Format ein Feld verwendet, haken Sie es bei einem Produkt an, speichern und lesen den gespeicherten Wert aus: Binden Sie den Key kurz als Textfeld (textinput) ein oder suchen Sie ihn wie unter Meta-Key eines Produkts finden beschrieben. Das _unit_price_auto von Germanized, der Schalter für die automatische Grundpreisberechnung, ist eines der Felder, die yes und no speichern.
Warum das Feld in BEAR invertiert aussieht
Ein Meta-Feld mit der Ansicht Kontrollkästchen (checkbox) schreibt 1, wenn es eingeschaltet ist, und 0, wenn es ausgeschaltet ist, und zeigt eine Zelle nur dann als eingeschaltet, wenn der gespeicherte Wert 1 ist. Bei einem Feld, das yes speichert, bedeutet das:
- Ein Produkt, bei dem das Kästchen in WooCommerce angehakt ist, erscheint in BEAR als ausgeschaltet, weil
yesnicht1ist. - Schalten Sie es in BEAR ein, wird
1geschrieben. Das Plugin prüft aufyes, daher ist das Kästchen im Bearbeitungsbildschirm des Produkts jetzt nicht mehr angehakt. - Das Ausschalten schreibt
0, was ebenfalls nichtyesist.
In keinem der beiden Plugins ist etwas kaputt: Sie sprechen nur unterschiedliche Werte. Die Lösung ist, BEAR mitzuteilen, welche Werte dieser Key verwendet.
Checkbox-Custom-Fields mit eigenen Werten in Masse bearbeiten
Füllen Sie im Tab Einstellungen (Settings) unter Allgemeine Einstellungen (General settings) das Feld Wert des Meta-Kontrollkästchens überschreiben (Override meta checkbox value) aus. Jede Regel besteht aus dem Meta-Key, einem Doppelpunkt, dem Wert für „ein“, einem Caret-Zeichen und dem Wert für „aus“:
_unit_price_auto:yes^no,_hide_in_feed:yes^no,_show_badge:on^
- Trennen Sie die Regeln mit Kommas und setzen Sie dahinter keine Leerzeichen: Der Key muss exakt stimmen, und
_hide_in_feedmit führendem Leerzeichen ist ein anderer Key. - Geben Sie immer beide Werte an. Mit nur dem ersten, wie in
_show_badge:on, schreibt das Ausschalten weiterhin0. Soll für „aus“ ein leerer Wert gespeichert werden, beenden Sie die Regel mit dem Caret-Zeichen, wie oben bei_show_badge:on^. - Eine Zelle wird als eingeschaltet angezeigt, wenn der gespeicherte Wert genau dem ersten Wert entspricht.
Yesmit großem Anfangsbuchstaben ist nichtyes.
Speichern Sie die Einstellungen und laden Sie den Editor neu. Die Spalte zeigt jetzt den tatsächlichen Zustand, und das Umschalten einer Zelle schreibt die Werte des Plugins. Bei aktivierter Option verknüpfte Bearbeitung (binded editing) geht derselbe Schalter an jedes markierte Produkt, solange Moderne Schalter laden (Load beauty switchers) in denselben Einstellungen auf dem Standardwert Ja (Yes) bleibt. Die Dokumentation der Einstellungen listet die übrigen Optionen dieses Blocks auf.
Massenläufe für den gesamten Katalog: ein Textfeld verwenden
Für ein Checkbox-Feld bietet der Tab Massenbearbeitung (Bulk Edit) ein Dropdown in der Gruppe Status und Typen (statuses and types), und der Tab Filter (Filters) einen Ja/Nein-Filter. Beide sind eingeschränkt:
- Das Ja (Yes) im Tab Massenbearbeitung schreibt
1oder den ersten Überschreibungswert. Das Nein (No) schreibt in der aktuellen Version nicht0und nicht den zweiten Überschreibungswert: Es speichert2, was ein 1/0-Feld als eingeschaltet wertet und ein yes/no-Feld nicht erkennt. - Der Ja/Nein-Filter vergleicht mit
1und0und ignoriert die Überschreibung, sodass er Produkte nicht anhand vonyesodernofinden kann. - Bei eingeschaltetem Schalter Variationen (variations) werden Checkbox-Felder im Tab Massenbearbeitung gar nicht angeboten.
Stellen Sie für Arbeiten am gesamten Katalog die Ansicht des Feldes für die Dauer des Laufs auf Text um. Die Ansicht legt nur fest, wie BEAR das Feld anzeigt und schreibt; sie zu ändern berührt die gespeicherten Werte nicht.
- Stellen Sie im Tab Meta-Felder (Meta Fields) die Ansicht des Feldes auf Textfeld (textinput) und seinen Typ auf Zeichenkette (string) und klicken Sie auf Meta-Felder speichern (Save meta fields). Die Spalte zeigt jetzt die Rohwerte:
yes,no,1,0oder nichts. - Suchen Sie im Tab Filter mit dem Textfilter des Feldes die zu ändernden Produkte: Verhalten GENAU (=) (EXACT (=)) mit
yesoder Leer (Empty) für Produkte, bei denen das Feld nie gespeichert wurde. Ein Filter auf2findet Produkte, die ein früherer Lauf mit Nein (No) verändert hat. - Markieren Sie im Tab Massenbearbeitung die Zeile des Feldes in der Gruppe Text, geben Sie den exakten Wert ein, zum Beispiel
no, wählen Sie neu (new) und klicken Sie auf Massenbearbeitung durchführen (Do Bulk Edit). Bei eingeschaltetem Schalter Variationen (variations) schreibt diese Zeile auch in die Variationen. - Stellen Sie die Ansicht wieder auf Kontrollkästchen (checkbox) zurück, wenn Sie für die tägliche Arbeit Schalter bevorzugen.
Viele Shops behalten yes/no-Felder einfach als Textfelder. Jeder Massenlauf wird im Verlauf (History) aufgezeichnet und lässt sich rückgängig machen.
Select- und Dropdown-Felder
Ein Select-Feld speichert den Wert der gewählten Option, und der ist oft nicht die Beschriftung, die der Editor zeigt: Die Beschriftung Großer Karton kann als box_l gespeichert sein. BEAR kann für ein Meta-Feld die Optionsliste des Plugins nicht anbieten, denn ein Meta-Feld enthält freie Daten, und die Liste existiert nur im Code des anderen Plugins. Binden Sie ein solches Feld als Textfeld (textinput) und Zeichenkette (string) ein und tippen Sie den gespeicherten Wert ein:
- Wählen Sie bei einem Testprodukt nacheinander jede Option, speichern Sie und notieren Sie den Wert, den die Spalte zeigt. Das ist die Liste der gültigen Werte.
- Suchen Sie mit dem Textfilter und GENAU (=) (EXACT (=)) die Produkte mit einer Option und setzen Sie im Tab Massenbearbeitung mit neu (new) eine andere.
Ein Wert, der nicht auf der Liste des Plugins steht, wird gespeichert, aber das Plugin erkennt ihn nicht; sein Select zeigt meist die erste Option, und das Frontend ignoriert das Feld möglicherweise. Das _unit von Germanized ist so ein Feld: Es enthält eine Einheit als Text, und BEAR bearbeitet es als Text und nicht als Dropdown mit Einheiten. Multi-Select-Felder speichern eine serialisierte Liste; für ACF siehe Massenbearbeitung von ACF-Feldern, für andere Plugins die Ansicht Array, die in der Dokumentation der Meta-Felder beschrieben ist.
Textarea-Felder
Die Ansicht Textbereich (textarea) speichert Text wie der Typ Zeichenkette (string) und bearbeitet ihn in einem Popup mit dem WordPress-Editor, was sich für lange Texte und HTML eignet. Im visuellen Modus verpackt der Editor einfachen Text in Absatz-Tags; bei einem Feld, das schlicht bleiben muss, etwa ein Code oder eine kurze Notiz, die innerhalb eines anderen Satzes ausgegeben wird, schalten Sie das Popup vor dem Speichern in den Textmodus oder verwenden Textfeld (textinput). Ein Textarea-Feld hat denselben Textfilter und dieselbe Zeile im Tab Massenbearbeitung wie ein Textfeld.
Binden Sie den Key unabhängig von der Ansicht genau so ein, wie er gespeichert ist, am besten über Meta-Schlüssel von einem beliebigen Produkt anhand seiner ID abrufen (Get meta keys from any product by its ID). Der Key eines eingebundenen Feldes lässt sich nicht umbenennen: Ein anderer Key bedeutet andere Daten, und unter einem falsch getippten Key gespeicherte Werte bleiben dort, bis Sie sie entfernen.
Checkliste
- Die gespeicherten Werte des Feldes sind bekannt:
1/0,yes/no,on/leer oder etwas anderes. - Felder, die nicht
1/0speichern, haben eine Regel unter Wert des Meta-Kontrollkästchens überschreiben (Override meta checkbox value) mit beiden Werten und ohne Leerzeichen. - Massenläufe und Filter verwenden die Textansicht mit dem exakten Wert.
- Select-Felder werden mit dem Optionswert bearbeitet, nicht mit seiner Beschriftung.
- Nach einem Test an zwei Produkten zeigt der Bearbeitungsbildschirm des Produkts das Kästchen wie erwartet angehakt oder nicht angehakt.
Speichert ein Feld etwas, das hier nicht behandelt wird, posten Sie den Key des Feldes und eine Produkt-ID im BEAR-Supportforum.