Guten Tag liebe Community,
In letzter Zeit beschäftige ich mich sehr umfangreich mit Wordpress, da ich in Zukunft einen Online Shop für Gamekeys betreiben möchte. Aktuell befinden sich in meiner SQL Datenbank über 4000 Produkte. Für den deutschen Markt habe ich selbstverständlich die Datenbank ziemlich gut gefiltert. Das Ergebnis sind 1920 Produkte, die hier angeboten werden können.
Nun stehe ich vor der Herausforderung die Produktbeschreibungen bei WooCommerce einzupflegen. Der Großhändler liefert eine relativ unsaubere Datenmenge, somit lassen sich die Produktbeschreibungen weder über eine CSV Datei noch über die API des Warenwirtschaftssystems (Billbee) importieren.
Deshalb habe ich mich dazu entschlossen die Beschreibungen direkt über die WooCommerce PHP SDK zu importieren.
-> Führt allerdings auch zu keinem großen Erfolg.
Bei den meisten Produkten werden die Beschreibungen leider nicht importiert.
PHP Code
Spoiler anzeigen
<?php
//Datenbankverbindung ->
// WooCommerceverbindung ->
// Produktbeschreibungen aus der Datenbank selektieren
$selectOnline1 = "SELECT shop_product_ass.productId, default_description.dDescription, default_description.ter_id FROM shop_product_ass INNER JOIN default_description ON shop_product_ass.productId = default_description.productId WHERE default_description.ter_id = 19 GROUP BY shop_product_ass.productId";
$resultSelectOnline1 = $conn->query($selectOnline1);
use Automattic\WooCommerce\HttpClient\HttpClientException;
try {
$arrWoo = array(); // Array mit ProduktSKU && WooIds
// Schreibe ProduktSKUs && WooIds in ein Array
$maxPage = 20;
$page = 1;
$count = 0;
$perPage = 100;
for($loop = 0;$loop < $maxPage;$loop++){
if($page == 20){
$perPage = 20;
}
echo "Seite : ".$page."\n";
sleep(1);
$results = $woocommerce->get('products',array('per_page' => $perPage, 'page' => $page));
foreach($results as $r){
$arrWoo[$count][0] = $r->sku;
$arrWoo[$count][1] = $r->id;
$count++;
}
echo $arrWooLength = count($arrWoo);
echo "\n";
$page++;
}
// Schreibe ProduktSKUs && WooIds in ein Array Ende
while($row = $resultSelectOnline1->fetch_assoc()) {
// echo $row['productId']." aus dem Datenpool geholt \n";
for($i = 0;$i < $arrWooLength;$i++){
if($arrWoo[$i][0] == $row['productId']){
$wooId = $arrWoo[$i][1];
$desc = $row['dDescription'];
// echo "Beschreibung aus dem Datenpool geholt \n";
$desc = preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', "", $desc); // Entferne Javascript
$desc = str_replace(array("\r\n", "\r", "\n"), '', $desc); // Zeilenumbrüche entfernen
// echo "Zeilenumbrüche entfernt \n";
$desc = preg_replace("/<img[^>]+\>/i", "", $desc); // <img src=''> Tags entfernen
// echo "Produktbeschreibung von ".$wooId." wird aktualisiert \n";
//erstelle Array mit der Produktbeschreibung
$data = [
'description' => $desc
];
$wooProduct = 'products/'.$wooId;
sleep(10); // warte 10 Sekunden, da sonst zu viele Anfragen geschickt werden & Script abbricht
// Füge Produktbeschreibung bei WooCommerce ein
if($woocommerce->put($wooProduct, $data)){
echo "Produktbeschreibung von ".$wooId." erfolgreich aktualisiert \n";
}
else{
echo "ERROR \n";
}
}
}
}
} catch (HttpClientException $e) { // Fehlermeldungen
echo '<pre><code>' . print_r( $e->getMessage(), true ) . '</code><pre>'; // Error message.
echo '<pre><code>' . print_r( $e->getRequest(), true ) . '</code><pre>'; // Last request data.
echo '<pre><code>' . print_r( $e->getResponse(), true ) . '</code><pre>'; // Last response data.
}
?>
Alles anzeigen
Hier ist eine Beispielbeschreibung die nicht importiert werden konnte.
Spoiler anzeigen
Ein heftiger Sturm verursacht die Zombieapokalypse und stellt dich vor eine noch die dagewesene Herausforderung. Du musst die Überlebenden durchfüttern, die langfristige Versorgung deiner Kolonie sichern und ganz nebenbei die einfallenden Zombiemassen zurücktreiben.<br><br>Es ist ein Time Management Game der etwas anderen Art. Die Fröhlichkeit eines Casualgames kollidiert mit Elementen, die sonst nur aus dem Horror-Genre bekannt sind. Erlebe den Kontrast, der beide Genres auf die Schippe nimmt!<h2>Kern Features</h2><br><ul><li>Kombiniert Elemente aus Farming, Tower Defense und Time-Management Genres<br></li><li>Bebaue deine Farm mit vielen verschiedenen Früchten, Gemüsesorten und Tieren<br></li><li>Baue, leite und verbessere dein eigenes Restaurant und koche eine Reihe von unterschiedlichen Gerichten<br></li><li>Verteidige deine Farm indem du Labyrinthe aus Zäunen erbaust und sie mit Türmen sicherst. Unsere Zombies sind die bösartigsten Vegetarier, die du je gesehen hast<br></li><li>Gestalte und kleide deinen eigenen Charakter<br></li><li>Verliere dich in einem unblutigem, fruchtigen Überlebenskampf<br></li><li>Die Story bietet 5-6 Stunden Spielspaß<br></li><li>Friedlicher Modus für entspannte Farmer<br></li><li>Originaler Soundtrack</li></ul
Hat jemand evtl eine gewisse Ahnung oder evtl eine Vermutung weshalb das aktuallisieren der Produktbeschreibungen bei einigen Produkten scheitert ?