BEAR - WooCommerce Bulk Editor and Products Manager Professional

WooCommerce Produkt-CSV-Export funktioniert nicht: Lösungen für BEAR-Exporte

Wenn der WooCommerce Produkt-CSV-Export in BEAR nicht funktioniert, sagt Ihnen das Symptom, wo Sie suchen müssen: Die Export-Schaltflächen reagieren nicht, der Fortschrittsbalken bewegt sich nicht, die heruntergeladene Datei ist leer oder veraltet, die Datei enthält mehr Produkte, als der Filter zeigte, oder Excel öffnet sie mit kaputten Buchstaben. Jedes davon hat eine eigene Ursache, und ein erneuter Export behebt keine davon. Unten steht zuerst, wie ein Export abläuft, dann die Lösung für jedes Symptom.

Wie ein BEAR-Export abläuft

Der Export-Tab arbeitet über eine Reihe von Anfragen an admin-ajax.php:

  1. Start. Der Server löscht die früheren Exportdateien, legt in wp-content/plugins/woo-bulk-editor/ext/export/__exported_files/ eine neue Datei mit der Kopfzeile an und sendet, wenn keine Produkte angehakt sind, die IDs der Produkte zurück, die zum aktuellen Filter passen.
  2. Zeilen. Der Browser sendet die Produkte in Portionen zu zehn. Der Server hängt ihre Zeilen an und fügt die Variationen variabler Produkte hinzu. Der Fortschrittsbalken zählt diese Portionen.
  3. Download. Nach der letzten Portion erscheint die Schaltfläche CSV herunterladen (download CSV) (oder XML herunterladen (download XML)). Sie verweist nicht auf die Datei: Sie fragt den Server, der Ihre Berechtigung prüft und die Datei sendet. Der Ordner selbst ist für das Web gesperrt.

Jeder Export bekommt einen eigenen Dateinamen: woobe_exported_, Datum und Uhrzeit und ein zufällig wirkendes Ende. Die Spalten sind die, die im Tab Einstellungen für Ihren Benutzer aktiv sind, in derselben Reihenfolge. Der Hinweis oben im Tab, Export wird angewendet auf (Export will be applied to), nennt die Produkte, die die Datei enthalten wird.

Die Export-Schaltflächen reagieren nicht

Wenn ein Klick auf Als CSV exportieren (Export to CSV) nichts bewirkt oder die Schaltflächen ausblendet und dann stehen bleibt, hat ein JavaScript-Fehler ihn unterbrochen. Drücken Sie F12, öffnen Sie den Tab Konsole (Console), klicken Sie die Schaltfläche erneut und lesen Sie die rote Zeile.

lang.export is undefined (Firefox) oder Cannot read properties of undefined (reading 'export_is_going') (Chrome) hat eine bestimmte Ursache. BEAR hält seine Oberflächentexte in einem globalen JavaScript-Objekt namens lang, und der Export-Tab fügt ihm eigene Texte hinzu. Ein Theme oder ein anderes Plugin, das auf derselben Seite später ein eigenes globales lang deklariert, ersetzt das Objekt von BEAR, und die Export-Texte gehen damit verloren. Zur Bestätigung geben Sie typeof lang.export in die Konsole ein: Es muss "object" antworten. Suchen Sie dann das Skript, das es überschreibt: Deaktivieren Sie Plugins nacheinander auf einer Staging-Kopie, oder halten Sie den Verursacher dauerhaft vom Editor fern, wie in Plugins bei Massenbearbeitungen isolieren beschrieben. Ändern Sie nicht die export.js von BEAR, um die Texte zu entfernen: Das nächste Update stellt die Datei wieder her.

Auch andere rote Fehler eines anderen Plugins oder Themes können die Skripte des Editors stoppen. Spielt der ganze Editor verrückt, beginnen Sie mit dem Bulk-Editor, der nicht lädt.

Der Export wird nie fertig, endet mit Fehler 500 oder lädt eine leere Datei herunter

Kann PHP den Export-Ordner nicht beschreiben, hält die aktuelle Version ohne Fehlermeldung an, und was Sie sehen, hängt davon ab, wie Sie exportiert haben:

  • Mit einem Filter oder dem gesamten Katalog: Der Fortschrittsbalken bleibt leer, nur Export abbrechen (cancel export) ist sichtbar, und die Meldung Wird exportiert ... (Exporting ...) verschwindet nie.
  • Mit angehakten Produkten: Der Tab meldet Exportiert (Exported) und zeigt die Download-Schaltfläche, aber die heruntergeladene Datei ist leer, oft als admin-ajax.htm gespeichert.

Das erste Bild erscheint auch dann, wenn der Filter keine Produkte findet; prüfen Sie daher zuerst die Anzahl unter der Tabelle. Ältere Versionen brachen mit HTTP 500 und dieser Zeile im PHP-Fehlerprotokoll ab: fputs(): Argument #1 ($stream) must be of type resource, bool given in ext/export/export.php. Die Ursache ist dieselbe: Die Datei konnte nicht zum Schreiben geöffnet werden. Aktualisieren Sie BEAR und bringen Sie dann den Ordner in Ordnung.

Am häufigsten tritt das nach einem Umzug auf einen anderen Host oder nach der Wiederherstellung eines Backups auf, wenn die Dateien einem anderen Systembenutzer gehören als dem, unter dem PHP läuft. Weitere Ursachen: Managed Hosting, das den Plugin-Ordner der Live-Website schreibgeschützt hält, ein volles Speicherkontingent, eine open_basedir-Beschränkung. So beheben Sie es:

  1. Öffnen Sie wp-content/plugins/woo-bulk-editor/ext/export/ im Dateimanager des Hostings oder per FTP. BEAR legt __exported_files selbst an, wenn der Ordner fehlt und es dazu berechtigt ist.
  2. Stellen Sie sicher, dass der Ordner dem Benutzer gehört, unter dem PHP läuft, und die Berechtigungen 755 hat (Dateien 644). Können Sie den Besitzer nicht ändern, bitten Sie den Hoster, PHP dort Schreibzugriff zu geben.
  3. Prüfen Sie das Speicherkontingent des Hosting-Kontos.
  4. Ist der Ordner beschreibbar und der Export schlägt trotzdem fehl, schalten Sie das Debug-Protokoll in wp-config.php ein und lesen Sie nach dem nächsten Versuch wp-content/debug.log:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Fügen Sie diese Zeilen oberhalb der Zeile That's all, stop editing ein und entfernen Sie sie, wenn Sie fertig sind. Die WordPress-Debugging-Anleitung erklärt sie.

Der Download ist leer, veraltet oder hat die falschen Spalten

  • Die Datei ist weg. Exportdateien werden 8 Stunden nach dem Schreiben gelöscht (seit Version 2.2.3), und jeder neue Export löscht die früheren Dateien. Der Ordner wird gemeinsam genutzt, daher entfernt der Export eines Kollegen auch Ihren. Laden Sie direkt nach Abschluss des Exports herunter und führen Sie Exporte nacheinander aus.
  • Die Seite ist zu alt. Der Download-Link trägt ein WordPress-Sicherheits-Token, das beim Laden der Editor-Seite erzeugt wurde. Solche Token sind 12 bis 24 Stunden gültig; danach sendet der Server nichts, und der Browser speichert eine leere Datei. Laden Sie den Editor neu und exportieren Sie erneut.
  • Jedes Mal dieselbe alte Datei. Ältere Versionen luden die Datei direkt aus dem Plugin-Ordner herunter, wo ein Server- oder CDN-Cache eine frühere Kopie ausliefern konnte. Seit 2.2.3 hat jeder Export einen neuen Namen und kommt mit No-Cache-Headern über admin-ajax.php. Bekommen Sie weiterhin eine alte Datei, aktualisieren Sie BEAR und stellen Sie sicher, dass keine Cache-Regel /wp-admin/ oder /wp-admin/admin-ajax.php abdeckt.
  • Falsche oder fehlende Spalten. Die Datei enthält genau die Spalten, die in den Einstellungen für den angemeldeten Benutzer aktiv sind, unabhängig davon, was die Tabs Massenbearbeitung oder Filter zeigen. Schalten Sie die Spalten ein, speichern Sie, laden Sie den Editor neu und exportieren Sie erneut. Speichern Sie die Auswahl als Spaltenprofil, wenn Sie sie oft brauchen.

Einige Spalten weichen absichtlich vom Editor ab, weil die Datei dem Format des WooCommerce-Produktimporters folgt: Jedes Attribut wird zu vier Spalten (Attribute 1 value(s), Attribute 1 name, Attribute 1 visible, Attribute 1 global), ein Meta-Feld wird zu Meta: plus seinem Schlüssel, und eine Spalte Parent kommt hinzu, sobald eine Attributspalte aktiv ist. Der Importer ordnet Spalten nach Namen zu, ihre Reihenfolge spielt für den Import also keine Rolle.

Mehr Produkte oder mehr Variationen, als der Filter zeigte

Der Export folgt einer festen Priorität: zuerst angehakte Produkte, dann der aktuelle Filter, dann alle Produkte. Wenn Sie früher Zeilen angehakt und das vergessen haben, lautet der Hinweis die ausgewählten Produkte (Variationen); heben Sie die Auswahl mit der Schaltfläche zum Abwählen im Werkzeugbereich auf. Lautet der Hinweis die gefilterten Produkte, die Datei enthält aber den ganzen Katalog, ging der Filter zwischen den Anfragen auf dem Server verloren. Die Anzahl unter der Tabelle springt in diesem Fall, und die Lösung steht in Bulk-Editor-Filter funktioniert nicht.

Bei Variationen ist es anders. Der Filter wählt Produkte aus; der Export fügt dann jede Variation jedes passenden variablen Produkts hinzu. Eine Bedingung wie ein Lagerbestand von 1 oder mehr entfernt die Variationen, die keinen haben, nicht. So grenzen Sie die Variationszeilen ein:

  • Schalten Sie Variationen (variations) im Werkzeugbereich ein. Der Export-Tab zeigt dann eine Auswahl für Attributkombinationen: Wählen Sie die Attribute, klicken Sie auf Attributkombination hinzufügen (Add attributes combination), wählen Sie die Werte und setzen Sie Enthalten (In) oder Nicht enthalten (Not in). Eine Kombination muss jedes Attribut der Variation genau benennen.
  • Oder haken Sie nur die gewünschten Variationszeilen an (alle Variationen auswählen (select all variations) hilft) und exportieren Sie die Auswahl.
  • Oder lassen Sie die Variationen, die sich nicht aus dem Lagerbestand verkaufen lassen, mit einem Hook weg:
// Child theme functions.php or a code snippets plugin.
// BEAR export: skip variations that are not in stock.
add_filter( 'woobe_export_cut_empty_variations', '__return_true' );

Damit überspringt der Export Variationen, deren Lagerstatus nicht Vorrätig ist (Lieferrückstand eingeschlossen), und Variationen, die den Lagerbestand verwalten und eine Menge von 0 oder weniger haben. Einfache Produkte und Zeilen übergeordneter Produkte bleiben unberührt. Für andere Änderungen an den exportierten Werten gibt es den Filter woobe_export_product_fields_answer, aufgeführt unter Weitere Einstellungen (implizit).

In Version 2.2.4 werden die Attributspalten von Variationszeilen leer geschrieben; die Werte erscheinen nur in der Zeile des übergeordneten Produkts. Fügen Sie die Spalte Titel (Title) hinzu, um Variationen zu unterscheiden (siehe Variationstitel mit Attributen, falls Ihre sie nicht zeigen), und bearbeiten Sie Variationen im Editor, statt sie aus dieser Datei mit dem WooCommerce-Importer neu aufzubauen.

Excel zeigt kaputte Buchstaben, falsche Preise oder Codes wie &

Die Datei wird in UTF-8 ohne Byte Order Mark geschrieben. Excel öffnet eine solche Datei per Doppelklick mit der regionalen Codepage des Computers, sodass griechische und kyrillische Buchstaben sowie Buchstaben mit Akzenten zu Unsinn werden, obwohl die Datei korrekt ist: Google Sheets und LibreOffice Calc zeigen sie richtig an. Verwenden Sie in Excel Daten → Aus Text/CSV (Data → From Text/CSV), setzen Sie Dateiursprung (File origin) auf 65001: Unicode (UTF-8) und wählen Sie das Trennzeichen, mit dem Sie exportiert haben.

  • Trennzeichen. Das Dropdown neben den Export-Schaltflächen bietet , ; | ^ und ~ an. Eine Datei für den WooCommerce-Importer muss ein Komma verwenden; ein Semikolon ist nur zum Ansehen in Excel praktischer, wo das Listentrennzeichen ein Semikolon ist.
  • Preise. Preise werden als gespeicherte Zahlen mit Punkt exportiert, etwa 29.90. Das Komma, das Sie im Shop sehen, ist das Anzeigeformat der Währung. Klicken Sie bei einem Gebietsschema mit Dezimalkomma im Importdialog auf Daten transformieren (Transform Data) und setzen Sie die Preisspalten mit Typ ändern → Mit Gebietsschema (Change Type → Using Locale) auf Englisch (USA).
  • SKUs und Codes. Excel entfernt führende Nullen und macht aus langen Zahlen 1.23E+12; stellen Sie solche Spalten im selben Dialog auf Text. Eine SKU, die statt des einfachen Bindestrichs ein bindestrichähnliches Zeichen enthält, typischerweise aus einem Dokument eingefügt, behält dieses Zeichen in der Datei; ersetzen Sie es im Shop durch einen Bindestrich.
  • HTML-Entitäten. Attributwerte durchlaufen die WordPress-Anzeigeformatierung, daher erscheint & als & und ein Apostroph kann als ’ erscheinen. Titel und andere Texte werden so geschrieben, wie sie gespeichert sind. Ersetzen Sie die Entitäten mit Suchen und Ersetzen, bevor Sie die Datei weiterverwenden.
  • Codierte Werte. Status ist 1 für veröffentlicht, -1 für Entwurf und 0 für privat; Lagerstatus (Stock status) ist 1 für vorrätig und 0 für alles andere; Zusatzverkäufe und Cross-Sells werden nach SKU aufgeführt, bei Produkten ohne SKU als id:123.

Checkliste

  1. BEAR ist aktuell, und typeof lang.export antwortet in der Konsole der Editor-Seite mit "object".
  2. ext/export/__exported_files im BEAR-Ordner ist für PHP beschreibbar.
  3. Der Hinweis Export wird angewendet auf nennt die erwarteten Produkte, und die Anzahl unter der Tabelle springt nicht.
  4. Die Datei wird direkt nach dem Export heruntergeladen, von einer Editor-Seite, die am selben Tag geladen wurde.
  5. Excel öffnet sie über Aus Text/CSV mit UTF-8.

Schlägt der Export weiterhin fehl, eröffnen Sie im BEAR-Supportforum ein Thema mit der BEAR-Version, dem, was der Tab nach dem Klick zeigt, und allen Konsolenfehlern oder debug.log-Zeilen.