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.
Ce sujet est une subdivision de https://wpml.org/fr/forums/topic/categories-on-shop-widget-dont-appear-in-other-languages/
Marqué : Exception
Ce sujet contient 22 réponses, a 2 voix.
Dernière mise à jour par Nicolas V. Il y a 1 année et 2 mois.
Assisté par: Nicolas V..
Auteur | Articles |
---|---|
Septembre 18, 2023 à 5:30 pm #14414617 | |
nicolasF-24 |
Bonjour Nicolas, Merci ! Par contre le problème de se ticket n’est pas résolu, je n’ai pas encore eu de retour de votre équipe |
Septembre 19, 2023 à 1:50 pm #14420115 | |
Nicolas V. Supporter
Les langues: Anglais (English ) Français (Français ) Fuseau horaire: America/Lima (GMT-05:00) |
Bonjour, Oui pardon, le ticket interne a été remonté à un niveau plus haut. Mes excuses pour la confusion. |
Septembre 21, 2023 à 12:04 pm #14438465 | |
Nicolas V. Supporter
Les langues: Anglais (English ) Français (Français ) Fuseau horaire: America/Lima (GMT-05:00) |
Bonjour, Il s'agit ici d'un bug qui se produit lorsque le taxonomy_term_id est différent du term_id. Merci de l'avoir reporté, notre équipe de développement va se pencher sur la question. En attendant voici un "workaround". Comme toute solution provisoire, merci de prendre toute les précautions en faisant un backup complet de votre site et base de données. Et idéalement de tester cela sur une copie staging avant. 1. Accédez à votre serveur via FTP (ou Cpanel) private function get_taxonomy_fields( $post ) { global $sitepress; $termMetaKeysToTranslate = self::getTermMetaKeysToTranslate(); // $getTermFields :: WP_Term → [[fieldId, fieldVal]] $getTermFields = function ( $term ) { return [ [ FieldId::forTerm( $term->term_taxonomy_id ), $term->name ], [ FieldId::forTermDescription( $term->term_taxonomy_id ), $term->description ], ]; }; // $getTermMetaFields :: [metakeys] → WP_Term → [[fieldId, fieldVal]] $getTermMetaFields = curryN( 2, function ( $termMetaKeysToTranslate, $term ) { // $getMeta :: int → string → object $getMeta = curryN( 2, function ( $termId, $key ) { return (object) [ 'id' => $termId, 'key' => $key, 'meta' => get_term_meta( $termId, $key ), ]; } ); // $hasMeta :: object → bool $hasMeta = function ( $termData ) { return isset( $termData->meta[0] ); }; // $makeField :: object → [fieldId, $fieldVal] $makeField = function ( $termData ) { return [ FieldId::forTermMeta( $termData->id, $termData->key ), $termData->meta[0] ]; }; // $get :: [metakeys] → [[fieldId, $fieldVal]] $get = pipe( Fns::map( $getMeta( $term->term_taxonomy_id ) ), Fns::filter( $hasMeta ), Fns::map( $makeField ) ); return $get( $termMetaKeysToTranslate ); } ); // $getAll :: [WP_Term] → [[fieldId, fieldVal]] $getAll = Fns::converge( Lst::concat(), [ $getTermFields, $getTermMetaFields( $termMetaKeysToTranslate ) ] ); return wpml_collect( $sitepress->get_translatable_taxonomies( false, $post->post_type ) ) // [taxonomies] ->map( Post::getTerms( $post->ID ) ) // [Either false|WP_Error [WP_Term]] ->filter( Fns::isRight() ) // [Right[WP_Term]] ->map( invoke( 'get' ) ) // [[WP_Term]] ->flatten() // [WP_Term] ->map( $getAll ) // [[fieldId, fieldVal]] ->mapWithKeys( Lst::fromPairs() ) // [fieldId => fieldVal] ->toArray(); } Par ceci: private function get_taxonomy_fields( $post ) { global $sitepress; $termMetaKeysToTranslate = self::getTermMetaKeysToTranslate(); // $getTermFields :: WP_Term → [[fieldId, fieldVal]] $getTermFields = function ( $term ) { return [ [ FieldId::forTerm( $term->term_taxonomy_id ), $term->name ], [ FieldId::forTermDescription( $term->term_taxonomy_id ), $term->description ], ]; }; // $getTermMetaFields :: [metakeys] → WP_Term → [[fieldId, fieldVal]] $getTermMetaFields = curryN( 2, function ( $termMetaKeysToTranslate, $term ) { // $getMeta :: int → string → object $getMeta = curryN( 2, function ( $termId, $key ) { global $wpdb; //start of the workaround $term_taxonomy_id = $termData->id; $termId = $wpdb->get_var( $wpdb->prepare( "SELECT term_id FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id = %d", $termId ) ); //change the $termid based on the proper term_taxonomy_id return (object) [ 'id' => $termId, 'key' => $key, 'meta' => get_term_meta( $termId, $key ), ]; } ); // $hasMeta :: object → bool $hasMeta = function ( $termData ) { return isset( $termData->meta[0] ); }; // $makeField :: object → [fieldId, $fieldVal] $makeField = function ( $termData ) { return [ FieldId::forTermMeta( $termData->id, $termData->key ), $termData->meta[0] ]; }; // $get :: [metakeys] → [[fieldId, $fieldVal]] $get = pipe( Fns::map( $getMeta( $term->term_taxonomy_id ) ), Fns::filter( $hasMeta ), Fns::map( $makeField ) ); return $get( $termMetaKeysToTranslate ); } ); // $getAll :: [WP_Term] → [[fieldId, fieldVal]] $getAll = Fns::converge( Lst::concat(), [ $getTermFields, $getTermMetaFields( $termMetaKeysToTranslate ) ] ); return wpml_collect( $sitepress->get_translatable_taxonomies( false, $post->post_type ) ) // [taxonomies] ->map( Post::getTerms( $post->ID ) ) // [Either false|WP_Error [WP_Term]] ->filter( Fns::isRight() ) // [Right[WP_Term]] ->map( invoke( 'get' ) ) // [[WP_Term]] ->flatten() // [WP_Term] ->map( $getAll ) // [[fieldId, fieldVal]] ->mapWithKeys( Lst::fromPairs() ) // [fieldId => fieldVal] ->toArray(); } 4. Ouvrez ensuite le fichier \WPML\TM\Jobs\TermMeta::geRegularTermMeta in \wp-content\plugins\sitepress-multilingual-cms\classes\translation-jobs\TermMeta.php private static function geRegularTermMeta( $iclTranslateJobId, $termTaxonomyId ) { global $wpdb; $sql = "SELECT field_data_translated, field_type FROM {$wpdb->prefix}icl_translate WHERE job_id = %d AND field_type LIKE 'tfield-%-%d'"; $rowset = $wpdb->get_results( $wpdb->prepare( $sql, $iclTranslateJobId, $termTaxonomyId ) ); return Fns::map( Obj::over( Obj::lensProp( 'field_data_translated' ), 'base64_decode' ), $rowset ); } Par ceci: private static function geRegularTermMeta( $iclTranslateJobId, $termTaxonomyId ) { global $wpdb; $sql = "SELECT field_data_translated, field_type FROM {$wpdb->prefix}icl_translate WHERE job_id = %d AND field_type LIKE 'tfield-%-%d'"; //start of the workaround $termTaxonomyId = $wpdb->get_var( $wpdb->prepare( "SELECT term_id FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id = %d", $termTaxonomyId ) ); //change the $termTaxonomyId to the term id $rowset = $wpdb->get_results( $wpdb->prepare( $sql, $iclTranslateJobId, $termTaxonomyId ) ); return Fns::map( Obj::over( Obj::lensProp( 'field_data_translated' ), 'base64_decode' ), $rowset ); } |
Septembre 21, 2023 à 3:01 pm #14440667 | |
nicolasF-24 |
Super merci je vais tester ca ! |
Septembre 21, 2023 à 5:06 pm #14441301 | |
Nicolas V. Supporter
Les langues: Anglais (English ) Français (Français ) Fuseau horaire: America/Lima (GMT-05:00) |
Bonjour, D'accord, je laisse le ticket en attente de votre feedback. Tenez moi informé car il s'agit ici d'un bug reporté aux développeurs, donc toute information est utile. |
Septembre 21, 2023 à 7:39 pm #14442139 | |
nicolasF-24 |
Alors du coup j'ai repris les catégories que je t'avais dit plus haut avec ce problème, j'ai relancé l'ATE sur le produit serviette, voir déjà si je voyais la extra description, mais non toujours rien ... |
Septembre 22, 2023 à 3:13 pm #14447699 | |
Nicolas V. Supporter
Les langues: Anglais (English ) Français (Français ) Fuseau horaire: America/Lima (GMT-05:00) |
Bonjour, D'accord, je vais tester moi même et si cela ne fonctionne pas je ferai à nouveau remonter au deuxième niveau |
Septembre 22, 2023 à 4:30 pm #14448161 | |
Nicolas V. Supporter
Les langues: Anglais (English ) Français (Français ) Fuseau horaire: America/Lima (GMT-05:00) |
Bonjour, Alors la solution d'appoint résout bien le problème puisque le champ "description extra" est maintenant présent dans notre éditeur de traduction avancé (ATE) mais cette nouvelle traduction n'était pas publiée. Son statut était "traduction complétée, non délivrée". J'ai nettoyé les travaux en cours et j'ai synchronisé les job IDs. Les traductions fonctionnement maintenant correctement et sont publiées. Voici la vidéo de mon intervention: lien caché |
Septembre 22, 2023 à 7:12 pm #14448937 | |
nicolasF-24 |
Merci beaucoup pour la vidéo ! Je comprends mieux pourquoi je ne l'avais pas J'ai donc créé un nouveau produit pour les catégories manquantes, je lui ai associé ces dites catégories et ca a fonctionné parfaitement !!! Merci beaucoup pour votre aide |