Wie verlinke ich mehrsprachige Produkte mit WP All Import (+ Polylang)?

Ich verwende WP All Import und Polylang, um mehr als 500 Produkte zu importieren. Ich kann jedoch keine Produkte verknüpfen, die von meiner csv / xlsx-Datei hochgeladen wurden. Die Struktur der Datei sieht folgendermaßen aus:

ID; Name; Description; Price; Language; 1; Product A; Description Product A; 5; en; 2; Продукт А; Описание Продукта А; 5; ru; 

Auf der Seite “Import bearbeiten” habe ich den Tab “private Taxonomien” gefunden und einen Haken bei “Jedes Produkt hat eine Sprache” gesetzt.

Nach dem Hochladen von CSV habe ich 2 verschiedene Produkte mit Englisch und Russisch. Ich muss sie mit WP All Import verbinden, nicht manuell.

Die Frage ist, wie man die Produkte verbindet?

PS Ich habe Tutorial gefunden , aber in meinem Fall gibt es keinen solchen Tab.

Solutions Collecting From Web of "Wie verlinke ich mehrsprachige Produkte mit WP All Import (+ Polylang)?"

Bitte beachten Sie, dass das Folgende eine allgemeine Lösung sein soll, nicht streng auf den Internethandel bezogen. Beachten Sie auch, dass ich derzeit beide Versionen von Polylang und Wp All Import / Export Pro verwende.

Das heißt, ich weiß, dass Polylang-Entwickler gerade an einem Addon für dieses spezielle Problem arbeiten. Jedenfalls habe ich es auf diese Weise geschafft, vorerst:

1 -> Wenn Sie Daten exportieren, gibt es zwei Polylang-bezogene Felder: languages und post_translations . Exportieren Sie sie auch.

2 -> Wenn Sie Ihre Daten importieren, erstellen Sie auf dem wpallimport-Bildschirm 2 weitere benutzerdefinierte Felder und speichern Sie die 2 oben. Siehe Anhang unten. Jetzt haben Sie die Übersetzungsdaten mit jedem Beitrag.

3 -> setze diesen Filter:

 global $language_codes; $language_codes = array( // sample lang data 'italiano' => 'it' ,'english' => 'en' ,'espanol' => 'es' ,'francais' => 'fr' ,'deutsch' => 'de' ); add_action('pmxi_saved_post', 'set_imports_lang', 10, 2); function set_imports_lang($post_id, $data){ global $language_codes; // 'lingue' is italian, I guess it will be 'languages' in english: it's one of the 2 fields we saved before pll_set_post_language($post_id, $language_codes[sanitize_title($data->lingue)]); } 

An diesem Punkt haben Sie nur die Originalsprache für jeden Beitrag festgelegt, nicht mehr. Jetzt müssen wir Übersetzungen miteinander verknüpfen. Wir machen das mit einer function, die NUR 1-mal ausgeführt werden muss. Es wird einfach jeden wp Bildschirm / Seite neu laden.

 function set_imports_translations(){ global $wpdb; global $language_codes; // substitute 'enews' with your own post type $list = $wpdb->get_results(" SELECT m.post_id, m.meta_value pll, group_concat(concat_ws(':', m2.meta_value, m.post_id)) ids FROM $wpdb->posts p INNER JOIN $wpdb->postmeta m ON p.ID = m.post_id INNER JOIN $wpdb->postmeta m2 ON m.post_id = m2.post_id AND m2.meta_key = '_import_language_name' WHERE p.post_type = 'enews' AND m.meta_key = '_import_translations_id' GROUP BY pll "); // query results are something like this: // 10258 pll_57e92254c445f 10258:Italiano,10259:English,10260:Español,10261:Français,10262:Deutsch // 10263 pll_57e922552b8c6 10263:Italiano,10264:English,10265:Español,10266:Deutsch // 10267 pll_57e9225587124 10267:Italiano // extract data from the third column string foreach($list as $item){ $ids = explode(',',$item->ids); $list = array(); foreach($ids as $id){ $data = explode(':',$id); $list[$language_codes[sanitize_title($data[0])]] = intval($data[1]); } //set the translations pll_save_post_translations($list); } } set_imports_translations(); 

Das ist alles. 🙂 Ah, der oben erwähnte Anhang:

Bildbeschreibung hier eingeben