WooCommerce SKU in Masse bearbeiten: ersetzen, Präfix, Variations-SKU, Duplikate
SKU-Änderungen kommen selten einzeln. Ein Lieferant benennt einen Code um, der in Hunderten von SKUs steckt, ein neuer Vertriebskanal braucht ein Präfix, Variationen brauchen SKUs, die aus der SKU des übergeordneten Produkts und ihrer Größe aufgebaut werden, neue Produkte brauchen Nummern. BEAR erledigt jede dieser Aufgaben, wenn Sie WooCommerce SKU in Masse bearbeiten, in einem Lauf im Tab Massenbearbeitung (Bulk Edit). Im Folgenden: was jedes Verhalten bewirkt, wie Variablen Variations-SKUs aufbauen, die Grenzen der fortlaufenden Nummerierung und wie SKUs eindeutig bleiben, denn WooCommerce lehnt Duplikate ab und ein Duplikat stoppt einen Massenlauf.
WooCommerce SKU in Masse bearbeiten: anhängen, voranstellen, neu, ersetzen
Wählen Sie zuerst die Produkte aus: Filtern Sie sie im Tab Filter (Filters) oder markieren Sie ihre Zeilen. Die Zeile Massenbearbeitung wird angewendet auf (Bulk editing will be applied to) über dem Massenbearbeitungsformular zeigt, welche Menge der Lauf ändern wird. Markieren Sie dann die SKU-Zeile im Tab Massenbearbeitung, geben Sie den Wert ein, wählen Sie ein Verhalten und klicken Sie auf Massenbearbeitung durchführen (Do Bulk Edit). Für ein Produkt mit der SKU AB-100:
| Verhalten | Was es bewirkt | Wert | Ergebnis |
|---|---|---|---|
| anhängen (append) | fügt den Text hinter der aktuellen SKU an | -EU | AB-100-EU |
| voranstellen (prepend) | fügt den Text davor ein | SHOP- | SHOP-AB-100 |
| neu (new) | ersetzt die gesamte SKU | X-{ID} | X-4821 |
| ersetzen (replace) | ersetzt einen Teil der SKU durch den Text aus durch Text ersetzen (replace to text) | 100 durch 200 | AB-200 |
ersetzen ist ein echtes Suchen und Ersetzen innerhalb der SKU. Um BSO-AC-PP40, BSO-LON-PP40 und alle übrigen in ...-DD40 umzuwandeln, filtern Sie die SKU mit ENTHÄLT (LIKE) PP40 und ersetzen Sie dann PP40 durch DD40. Schalten Sie bei Variationen Variationen (variations) ein und klicken Sie vor dem Lauf auf alle Variationen auswählen (select all variations), damit nur die passenden Variationszeilen markiert sind; warum, erklärt der Abschnitt zu Duplikaten. Es ändert jedes Vorkommen des Textes in einer SKU, suchen Sie daher nach einem Teil, der nicht zweimal vorkommen kann: -PP40 statt 40. Lassen Sie durch Text ersetzen leer, um den Text zu löschen. Wählen Sie daneben gleiche Groß-/Kleinschreibung (same case) oder Groß-/Kleinschreibung ignorieren (ignore case). Das Verhalten kennt keine Jokerzeichen und keine Positionen: Es kann einen Buchstaben entfernen oder ersetzen, aber nicht an eine andere Stelle in der SKU verschieben.
Bei einem Produkt ohne SKU schreiben anhängen und voranstellen einfach Ihren Text. Anders ist es bei einer Variation ohne eigene SKU: Der Editor liest die SKU, die WooCommerce für sie anzeigt, also die des übergeordneten Produkts. Das Anhängen von -XL an eine solche Variation ergibt daher AB-100-XL, ein praktischer Ausgangspunkt für Variations-SKUs.
Variablen: {SKU}, {ID}, {PARENT_SKU} und mehr
Das Dropdown variabel (variable) neben dem Wert fügt Platzhalter ein, die für jedes Produkt ausgefüllt werden: {TITLE}, {ID}, {SKU}, {MENU_ORDER}, {PARENT_ID}, {PARENT_TITLE}, {PARENT_SKU}, {REGULAR_PRICE} und {SALE_PRICE}. Sie können auch {attribute:pa_size} oder {meta:your_meta_key} eingeben. Bei einem Produkt, das keine Variation ist, liefern die Platzhalter für das übergeordnete Produkt die eigenen Werte des Produkts.
{SKU}ist die aktuelle SKU, daher bewirkt neu mit{SKU}-v2dasselbe wie anhängen mit-v2. Nützlich ist es in der Mitte eines Wertes:EU-{SKU}-2026.{ID}ist per Definition eindeutig. anhängen mit-{ID}macht jede SKU im Lauf eindeutig, der schnellste Ausweg aus Duplikaten.- Platzhalter funktionieren auch im Suchtext von ersetzen. So wird die SKU aus Produkttiteln entfernt, siehe Produkttitel in Masse bearbeiten.
Variations-SKUs aus der SKU des übergeordneten Produkts und aus Attributen
Filtern Sie die benötigten variablen Produkte und schalten Sie Variationen im Werkzeugbereich ein; die Massenbearbeitung gilt dann für ihre Variationen, während die übergeordneten Produkte ignoriert werden. Geben Sie dann in der SKU-Zeile mit neu ein:
{PARENT_SKU}-{attribute:pa_size}
Ein Hoodie HOOD erhält HOOD-S, HOOD-M, HOOD-XL. Ersetzen Sie pa_size durch den Slug Ihres Attributs: Globale Attribute beginnen mit pa_, ein benutzerdefiniertes Attribut des Produkts wird mit seinem Namen in Kleinbuchstaben geschrieben, mit Bindestrichen statt Leerzeichen. Eingefügt wird der Begriffsname, wie ihn der Shop anzeigt, einschließlich Groß- und Kleinschreibung und Leerzeichen: Dark Blue ergibt HOOD-Dark Blue. Bereinigen Sie das mit einem zweiten Lauf, ersetzen Sie ein Leerzeichen durch -, und wenn Sie Großbuchstaben möchten, mit einem dritten Lauf mit neu und der Variablen {DO_STRING_UP} (GROSSBUCHSTABEN (STRING UP)), die für den aktuellen Wert in Großbuchstaben steht.
Zwei Attribute brauchen zwei Läufe. Pro Wert wird nur ein Attribut-Platzhalter gelesen: {PARENT_SKU}-{attribute:pa_size}-{attribute:pa_color} verliert beide Attribute. Führen Sie zuerst neu mit {PARENT_SKU}-{attribute:pa_size} aus, dann anhängen mit -{attribute:pa_color}.
Brauchen Sie nur eindeutige Variations-SKUs, genügt {PARENT_SKU}-{ID} in einem Lauf; die FAQ zu SKUs für Variationen zeigt es auch mit verknüpfter Bearbeitung (binded editing). Um nur einigen Variationen neue SKUs zu geben, zum Beispiel einer Größe, siehe Variationen nach Attribut filtern.
Fortlaufende SKU-Nummern und ihre Grenzen
Ein Wert, der auf Ziffern und ein Pluszeichen endet, wie 10300+, 10300+5 oder ABC-10300+, ist ein Zähler: Die Syntax ist in SKUs in Masse fortlaufend generieren beschrieben. In Version 2.2.4 verhält sich der Zähler wie folgt:
- Er wird vor jedem Produkt erhöht. Im Tab Massenbearbeitung ergibt
10300+10301, 10302 und so weiter; geben Sie10299+ein, um bei 10300 zu beginnen. Bei verknüpfter Bearbeitung behält die Zelle, die Sie bearbeiten, die Startnummer, und die anderen markierten Zeilen zählen von dort weiter. - Er beginnt mit jedem Stapel neu. Der Editor sendet Produkte in Stapeln von Anzahl der gleichzeitig verarbeiteten Beiträge (Number of posts processed at a time) (Tab Einstellungen, standardmäßig 30, höchstens 100) an den Server, und jeder Stapel zählt wieder von vorn. Das erste Produkt des zweiten Stapels erhält eine bereits vergebene Nummer, und der Lauf stoppt an diesem Duplikat. Halten Sie jeden Lauf innerhalb eines Stapels: höchstens so viele markierte Zeilen oder so viele gefilterte Produkte (im Variationsmodus bringt jedes Produkt alle seine Variationen in seinen Stapel mit). Beginnen Sie den nächsten Lauf dort, wo der letzte endete.
- Er zählt über den gesamten Lauf. Er beginnt nicht pro Produkt neu: Das Anhängen von
-0+an die Variationen vonHOOD, die keine eigene SKU haben, ergibtHOOD-1,HOOD-2,HOOD-3, und das nächste Produkt macht mit-4weiter. Gefilterte Produkte werden in der Reihenfolge der Produkt-ID nummeriert, markierte Zeilen in der Reihenfolge, in der Sie sie markiert haben.
Benötigen Sie eine wörtliche SKU, die auf Ziffern und ein Pluszeichen endet, schalten Sie den Zähler aus:
// BEAR: treat "10300+" in the SKU row as plain text, not as a counter.
// Child theme functions.php or a code snippets plugin.
add_filter( 'woobe_sku_auto_increment', '__return_false' );
Doppelte SKUs in WooCommerce verhindern
WooCommerce verlangt, dass jede SKU unter den Produkten und Variationen, die nicht im Papierkorb liegen, eindeutig ist, und lehnt ein Duplikat mit der Meldung Ungültige oder doppelte Artikelnummer. (Invalid or duplicated SKU.) ab. In 2.2.4 schreibt BEAR die neue SKU in die Datenbank, bevor WooCommerce sie prüft. Ein Duplikat bleibt daher im SKU-Feld des Produkts stehen, der Rest des Speicherns wird übersprungen und die Anfrage schlägt fehl: Ein Massenlauf stoppt mit einem Fehler, und die übrigen Produkte dieses Stapels werden nicht geändert. Typische Ursachen sind ein fester Wert mit neu für viele Produkte, ein Zähler über mehr als einen Stapel und ersetzen bei Variationen ohne eigene SKU, die die SKU des übergeordneten Produkts erhalten, wenn der gesuchte Text darin nicht vorkommt: Der Editor geht von der SKU aus, die WooCommerce für sie anzeigt, und das übergeordnete Produkt hat genau diese bereits.
Schalten Sie die eigene SKU-Kontrolle von BEAR ein, um Duplikate zu stoppen, bevor sie geschrieben werden:
/*
* BEAR: refuse a SKU that another product or variation already has.
* Child theme functions.php or a code snippets plugin.
*/
add_filter( 'woobe_init_sku_control', '__return_true' );
Bei eingeschalteter Kontrolle sucht BEAR die neue SKU unter allen Produkten und Variationen, einschließlich der Produkte im Papierkorb. Hat ein anderes Produkt sie, wird nichts geschrieben: Eine Zelle zeigt Fehler! SKU existiert bereits (Error! SKU already exists), und ein Massenlauf überspringt dieses Produkt und macht weiter. Scheint eine SKU frei zu sein, wird aber abgelehnt, schauen Sie in den Papierkorb. In 2.2.4 erscheint die Meldung auch, wenn eine Zelle mit der SKU gespeichert wird, die sie bereits hat; dann ändert sich nichts.
Um ein von einem früheren Lauf hinterlassenes Duplikat zu reparieren, suchen Sie die SKU mit GENAU (EXACT): Beide Produkte werden aufgelistet. Geben Sie dem falschen in seiner Zelle eine neue SKU; sobald das gelingt, speichert WooCommerce das Produkt wieder vollständig. Variationen nach SKU suchen erklärt, welche Zeilen eine solche Suche anzeigt.
SKUs duplizierter Produkte
Die Schaltfläche zum Duplizieren im Werkzeugbereich nutzt die eigene Duplizierung von WooCommerce, daher erhält eine Kopie von AB-100 die SKU AB-100-1 (oder -2, falls diese vergeben ist), und die Variationen eines kopierten variablen Produkts, die eine eigene SKU haben, erhalten dasselbe Suffix. Ändern Sie sie anschließend per Massenbearbeitung, oder lassen Sie WooCommerce beim Erstellen der Kopie Ihr eigenes Muster setzen:
/*
* Duplicated products and their variations get "COPY-AB-100" instead of "AB-100-1".
* Child theme functions.php or a code snippets plugin.
*/
add_action( 'woocommerce_product_duplicate_before_save', function ( $duplicate, $original ) {
$sku = $original->get_sku( 'edit' );
if ( '' !== $sku ) {
// WooCommerce adds -1, -2 ... only if COPY-AB-100 is taken as well
$duplicate->set_sku( wc_product_generate_unique_sku( 0, 'COPY-' . $sku ) );
}
}, 10, 2 );
Das Ergebnis vor dem nächsten Lauf prüfen
- Sehen Sie sich die SKU-Spalte bei eingeschaltetem Variationen an. Eine Variation, die noch die SKU ihres übergeordneten Produkts zeigt, hat keine eigene; filtern Sie die SKU mit Leer (Empty), um solche Variationen aufzulisten.
- Suchen Sie einige neue SKUs mit GENAU. Eine fehlende deutet auf einen Lauf hin, der an einem Duplikat gestoppt hat: Schalten Sie die SKU-Kontrolle ein und führen Sie den Rest erneut aus.
- Der Tab Verlauf (History) kann einen SKU-Lauf zurücksetzen. Die leere SKU einer Variation, die keine hatte, kann er nicht wiederherstellen: Er zeichnet die SKU des übergeordneten Produkts auf, die der Editor angezeigt hat; testen Sie Variationsläufe daher zuerst an einem Produkt.
- Bei Tausenden von Produkten wählen Sie eine für Ihren Server geeignete Stapelgröße, siehe Tausende von Produkten in Masse bearbeiten.
Verhält sich ein SKU-Lauf anders als hier beschrieben, posten Sie das Verhalten, den Wert und eine Beispiel-SKU im BEAR-Support-Forum.