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 de WPML répond aux messages du forum 6 jours sur 7, 22 heures sur 24.

Our next available supporter will start replying to tickets in about 0.28 hours from now. Thank you for your understanding.

This thread is resolved. Here is a description of the problem and solution.

Problem: L'utilisateur a définit un custom post type avec du code et il voudrait le rendre traduisible. Solution: La configuration de la traduction des post types est disponible sur WPML->Settings(Paramètres)->Traduction des types de publication.

This topic contains 4 réponses, has 2 participants.

Last updated by marionL-6 il y a 3 semaines.

Assigned support staff: Jamal.

Auteur Messages
août 23, 2019 à 7:22 #4444779

marionL-6

Bonjour,

J'ai 3 langues de configurées sur l'instance wordpress. J'importe des custom post type via une extension de synchronisation puis j'ai un traitement lorsque le post est mis à jour.

Ces custom post type sont ajoutés avec la langue par defaut mais je dispose dans les meta de la traduction du titre et du contenu du post pour les 2 autres langues (J'ai uniquement ces 2 contenus à traduire). Je souhaiterais activer la traduction lorsque le post est mis à jour avec ces données afin de publier les post traduits.

J'ai vu cet article : https://wpml.org/fr/faq/comment-traduire-des-types/ qui pourrait être un début mais je ne trouve pas l'option :WPML->Options de traduction.

Comment est-ce que je peux faire ?

D'avance merci,

Cordialement

août 23, 2019 à 8:45 #4445453

Jamal
Supporter

Languages: Anglais (English ) Français (Français )

Timezone: Africa/Casablanca (GMT+01:00)

Bonjour,

Merci d'avoir contacter l'assistance WPML. Je serais heureux de pouvoir vous aider.

Toutes nos excuses pour cette ancienne documentation. Maintenant les options de traductions pour les types de posts et aujourd'hui disponible sur WPML->Paramètres->Traduction des types de publication. Voir capture attachée.

Cordialement,
Jamal
Assistance WPML

août 26, 2019 à 5:02 #4460477
marionL-6

Bonjour,

Merci pour cette précision. Depuis j'ai pu avancer pour la mise à jour du contenu traduit. J'ai suivi les exemples trouvés sur votre support et j'arrive à quelques chose qui fonctionne : Les contenu du custom post type (property) est bien traduit en anglais et italien. Cependant, lorsque j'édite un des custom post type via le backoffice, j'ai un comportement étrange. alors que j'en avais deux ils se dédoubles. Alors que j'en ai deux dans la liste, j'en ai 4.. et j'ai pleins d'erreurs lorsque je tente d'en supprimer oui d'en modifier un. Je suis obligé d'aller dans la base pour supprimer tous les custom post field property et ainsi je n'ai plus d'erreurs :

DELETE FROM NWM5ODposts WHERE post_type='property';
DELETE FROM NWM5ODpostmeta WHERE post_id NOT IN (SELECT id FROM NWM5ODposts);
DELETE FROM NWM5ODterm_relationships WHERE object_id NOT IN (SELECT id FROM NWM5ODposts)

Ci dessous le code que j'ai adapté et que j'utilise :

//TRADUCTION LANGUE
$langs = array(array('en','libelle_langue1','descriptif_langue1',1),array('it','libelle_langue2','descriptif_langue2',3));
// get the language info of the original post
// https://wpml.org/wpml-hook/wpml_element_language_details/
$get_language_args = array('element_id' => $post_id, 'element_type' => 'property' );
$original_post_language_info = apply_filters( 'wpml_element_language_details', null, $get_language_args );
// https://wpml.org/wpml-hook/wpml_element_type/
$wpml_element_type = apply_filters( 'wpml_element_type', 'property' );

foreach($langs as $lang){
$translation = array(
'post_title' => get_post_meta($post_id, $lang[1], true),
'post_content' => get_post_meta($post_id, $lang[2], true),
'post_status' => 'publish',
'post_type' => 'property',
'post_author' => 1,
'post_category' => array($lang[3]) // NOTE: this is the translated category id!
);
$propertyId = apply_filters( 'wpml_object_id', $post_id , 'property', FALSE,$lang[0]);
if($propertyId == 0){
$lang_post_id = wp_insert_post( $translation );
if( $lang_post_id ){
$set_language_args = array(
'element_id' => $lang_post_id,
'element_type' => $wpml_element_type,
'trid' => $original_post_language_info->trid,
'language_code' => $lang[0],
'source_language_code' => $original_post_language_info->language_code
);
do_action( 'wpml_set_element_language_details', $set_language_args );
}
}else{
$translation['ID'] = $lang_post_id;
wp_update_post( $translation );
}
}

Je pense qu'il y a peut être un lien avec cette ligne où j'ignore quoi mettre exactement :
'post_category' => array($lang[3]) // NOTE: this is the translated category id!

Qu'est ce que : translated category id ? Existe-t-il une méthode pour récupérer les id des différentes langues ?

Sinon avez vous eu déjà des comportements similaires a ce que je décris ?

D'avance merci,

Cordialement

Les nouveaux fils créés par Jamal et associés à celui-ci sont repris ci-dessous :

https://wpml.org/fr/forums/topic/comment-recuperer-lid-categorie/

août 27, 2019 à 9:07 #4464081

Jamal
Supporter

Languages: Anglais (English ) Français (Français )

Timezone: Africa/Casablanca (GMT+01:00)

Bonjour,

Pour les règles de support, nous ne pouvons gérer qu'un problème à la fois. Cela nous aide à vous fournir un meilleur service et à aider les autres utilisateurs à trouver toutes les informations exposées.
Pour cette raison, j'ai créé un nouveau ticket pour vos dernieres questions par rapport à l'id catégorie. J'y posterais mes réponses.

Pour la reqûete originale, je vous prie de continuer ici si vous avez besoin de plus d'assistance ou de marquer ce ticket comme résolu.

Cordialement,
Jamal

août 30, 2019 à 7:58 #4485189

marionL-6

My issue is resolved now. Thank you!