Sauter la navigation

Il s'agit du forum d'assistance technique de WPML, le plug-in multilingue pour WordPress.

Il est accessible à tous, toutefois seuls les clients de WPML peuvent y publier leurs messages. L'équipe du WPML répond sur le forum 6 jours par semaine, 22 heures par jour.

Aucun de nos assistants n'est disponible aujourd'hui sur le forum French. Veuillez créer un ticket, et nous nous le traiterons dès notre prochaine connexion. Merci de votre compréhension.

Sun Mon Tue Wed Thu Fri Sat
- 7:00 – 15:00 7:00 – 15:00 7:00 – 15:00 7:00 – 15:00 7:00 – 15:00 -
- - - - - - -

Fuseau horaire du supporter: Pacific/Easter (GMT-05:00)

Marqué : 

Ce sujet contient 4 réponses, a 2 voix.

Dernière mise à jour par Ilyes Il y a 4 mois.

Assisté par: Ilyes.

Auteur Articles
juillet 4, 2024 à 2:20 pm #15892737

jorgB-6

Contexte de la question:
Nous avons créé un module pour créer automatiquement des variations de produits. Nous utilisons WC_Product_Variation() avec $variation->save(). Le module crée bien la variation dans la langue principale.

Symptômes:
Toutefois, pas les variations correspondantes pour les langues étrangères ne sont pas créées.

Questions:
Quelle est la méthode à employer pour y parvenir ?
Comment faut-il faire ?

juillet 5, 2024 à 12:23 am #15894436

Ilyes
Supporter

Les langues: Anglais (English ) Français (Français )

Fuseau horaire: Pacific/Easter (GMT-05:00)

Bonjour,

Merci d'avoir contacté l'équipe d'assistance WPML,

Il semble que ce module soit un code personnalisé, ce qui pourrait être en dehors de notre support, mais je pourrais suggérer quelques trucs et astuces si nécessaire,

Par ailleurs, il n'y a aucun moyen de traduire automatiquement les taxonomies après l'ajout de contenu par un programme (Module code).

J'ai vérifié la documentation de l'API et je n'ai pas semblé trouver de hook à cet effet :
- https://wpml.org/documentation/support/wpml-coding-api/wpml-hooks-reference/
- https://wpml.org/documentation/related-projects/woocommerce-multilingual/wcml-hooks-reference/

Le fait est que WPML ne met à jour la traduction qu'à partir du backend - dans ce cas, seulement si vous mettez à jour l'article ou la taxonomie lorsque l'administrateur est connecté et que le tableau de bord est ouvert, alors cela devrait fonctionner.

Cela dit, pourriez-vous partager le code du module afin d'obtenir plus d'informations à ce sujet ?

Merci beaucoup,

juillet 5, 2024 à 8:02 am #15896854

jorgB-6

Bonjour,

Vous avez visiblement mal compris le problème. Je vais essayer d'expliquer à nouveau.

1. Nous créons avec le code de notre module des variations de produits dans la langue principale.
2. Et c'est ensuite que vous avez visiblement mal compris : Nous souhaitons créer automatiquement avec notre code aussi les variations du produit dans les autres langues du site (DE et EN). La langue principale est FR. Le stock, le prix de vente, le SKU sont identiques pour toutes les langues. Ces données ne se traduisent pas puisqu'il s'agit de chiffres. Pourtant WPML WCML crée une variation pour chaque langue avec chacune de ces données. Cela crée d'ailleurs non seulement une redondance de données qui est contraire à toute bonne gestion de base de données, mais aussi parfois à des problème de cache.

Donc, notre question est : Quelle fonction de votre API utiliser pour créer ces variations à partir du code de programmation ? Suivant votre description, lorsque l'administrateur passe par le backoffice pour créer par la voie traditionnelle les variations, il y a bien une fonction d'API qui est exécutée pour y parvenir.

Voici l'extrait du code avec lequel nous créons la variation :

$variation_slugs = [
'attribute_pa_hauteurlivree' => $height_slug,
'attribute_pa_tailledepot' => $pot_slug
];

$matching_variation_id = (new WC_Product_Data_Store_CPT())->find_matching_product_variation( new WC_Product( $subArray['product_id'] ), $variation_slugs );

if ( !$matching_variation_id ) {

// Create new variation and activate ATUM stock management
$variation = new WC_Product_Variation();
$variation->set_parent_id( $subArray['product_id'] );
$variation->set_attributes( $variation_slugs );
// get the freshly created variation's ID
$matching_variation_id = $variation->save();

} else {

// Update existing variation
$variation = new WC_Product_Variation( $matching_variation_id );

}

$variation->set_sku( $subArray['product_id'] . '-' . $matching_variation_id );
$variation->set_regular_price( $new_sale_price_excluding_vat );
$variation->set_manage_stock( true );
$variation->set_stock_quantity( $subArray['transformed_quantity'] );
$variation->save();
// Save the whole product
$product->save();

Cordialement

juillet 5, 2024 à 7:41 pm #15900028

Ilyes
Supporter

Les langues: Anglais (English ) Français (Français )

Fuseau horaire: Pacific/Easter (GMT-05:00)

Bonjour,

Merci pour cette précision,

J'ai envoyé votre code et votre demande à nos développeurs pour obtenir des suggestions sur la façon dont vous pourriez réaliser cela avec votre code personnalisé,

Je vous informerai dès que j'aurai obtenu une réponse,

juillet 8, 2024 à 11:44 pm #15915919

Ilyes
Supporter

Les langues: Anglais (English ) Français (Français )

Fuseau horaire: Pacific/Easter (GMT-05:00)

Bonjour ;

J'ai reçu une réponse de notre équipe,

Les variations de traduction ne peuvent pas être créées aussi facilement par le code.
Nous avons une logique accrochée à l'action "save_post" qui appelle à la fin :

// duplicate variations
		$this->woocommerce_wpml->sync_variations_data->sync_product_variations( $original_product_id, $tr_product_id, $lang, [ 'is_duplicate' => $duplicate ] );

et cela duplique les variations dans les autres langues.

C'est dans le code : \WCML_Synchronize_Product_Data::sync_product_data in wp-content/plugins/woocommerce-multilingual/inc/translation-editor/class-wcml-synchronize-product-data.php

Le sujet '[Fermé] l’utilisation de l’API de WPML WCML' est fermé aux nouvelles réponses.