Hallo,
wir haben den Connector v2.4.1-dev auch getestet und konnten auch die Probleme mit den falsch zugeordneten Attributen feststellen wie bei HannesKannes.
Bei uns ist zusätzlich noch das Problem aufgetreten, dass die Werte der Attribute nur in einer Sprache abgspeichert werden.
Aus dem Connector Log hatten wir uns ein RPC Call für ein Attribut gesucht und diesen mit den Connector Tester (Specific Model Push, siehe Anhang) als Model genutzt.
Dabei ist uns aufgefallen, dass die Abfrage in
"wp-content/plugins/woo-jtl-connector/src/Integrations/Plugins/WooCommerce/WooCommerceSpecificValue.php" Zeile 39
Code:
$exValId = $this->getCurrentPlugin()->getPluginsManager()->getDatabase()->query(
SqlHelper::getSpecificValueIdBySlug(
$taxonomy,
$endpointValue['slug']
)
);
bei uns zweimal durchlaufen wird.
Code:
## Deutsch
SELECT lsv.host_id , lsv.endpoint_id, t.term_id, t.name, tt.term_taxonomy_id, tt.taxonomy, t.slug
FROM wp_terms t
LEFT JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id
LEFT JOIN wp_jtl_connector_link_specific_value lsv ON tt.term_taxonomy_id = lsv.endpoint_id
WHERE tt.taxonomy LIKE 'pa_analogausgang' AND t.slug = 'nein';
Code:
## Englisch
SELECT lsv.host_id , lsv.endpoint_id, t.term_id, t.name, tt.term_taxonomy_id, tt.taxonomy, t.slug
FROM wp_terms t
LEFT JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id
LEFT JOIN wp_jtl_connector_link_specific_value lsv ON tt.term_taxonomy_id = lsv.endpoint_id
WHERE tt.taxonomy LIKE 'pa_analogausgang' AND t.slug = 'no-en';
Ausgehend davon das in der Datenbank die deutschen Werte hinterlegt sind führt die Abfrage im englischen zu keinem Ergebnis und dadurch wird der deutsche Term später (ab Zeile 69)
Code:
...
} elseif (is_null($exValId) && $endValId !== 0) {
$wpml = $this->getPluginsManager()->get(Wpml::class);
if ($wpml->canBeUsed()) {
$wpml->getComponent(WpmlTermTranslation::class)->disableGetTermAdjustId();
}
$termId = \wp_update_term($endValId, $taxonomy, $endpointValue);
if ($wpml->canBeUsed()) {
$wpml->getComponent(WpmlTermTranslation::class)->enableGetTermAdjustId();
}
}
...
mit dem englischen Wert überschrieben, da die $exValId leer ist aber die $endValId nicht.
Wir haben das auch mit einem nicht vorhandenen Attribut getestet bzw hatten unser Referenz Attribut gelöscht und die Linking Tabelle geleert. Auch hier konnte wir das gleiche Verhalten wie oben beschrieben feststellen.
MfG
DjProfi