- Statut
- En attente de l’auteur
- Extension/thème associé
- Event Tickets Plus
Aperçu de l’anomalie
Lorsque vous utilisez l’extension Event Tickets Plus pour créer un nouvel événement et y ajouter des billets, la section des billets n’apparaît pas sur la page traduite de l’événement.
Solution de contournement
Avant de continuer, effectuez une sauvegarde complète de votre site :
- Ajoutez l’extrait suivant dans WPML → Paramètres → Configuration XML personnalisée :
<wpml-config> <custom-fields> <custom-field action="copy">_ticket_end_date</custom-field> <custom-field action="copy">_ticket_start_date</custom-field> <custom-field action="copy">_tribe_ticket_capacity</custom-field> <custom-field action="copy">_tribe_ticket_show_description</custom-field> <custom-field action="copy">_tribe_ticket_version</custom-field> <custom-field action="copy">_tribe_tickets_ar_iac</custom-field> <custom-field action="copy">_tribe_tickets_meta</custom-field> <custom-field action="copy-once">_tribe_wooticket_for_event</custom-field> </custom-fields> </wpml-config> - Ajoutez le code suivant au fichier functions.php :
//WPML Workaround add_action( 'save_post', 'wpmldp_update_tribe_wooticket_for_event_meta', 999,3 ); function wpmldp_update_tribe_wooticket_for_event_meta( $post_id, $post, $update ) { // Only set for post_type = product if ( 'product' !== $post->post_type ) { return; } //Check if WPML and THe Events Calendar are enabled if (class_exists('SitePress')) { //Get the current ID on "_tribe_wooticket_for_event" meta $current_wooticket_id = get_post_meta($post_id, '_tribe_wooticket_for_event'); if ( $current_wooticket_id ) { //Get Post Language $wpml_post_language_details = apply_filters( 'wpml_post_language_details', NULL, $post_id ) ; $wpml_current_language = $wpml_post_language_details['language_code']; //Check if there is a translation for the $current_wooticket_id. If not, returns the original ID $translated_wooticket_id = apply_filters( 'wpml_object_id', $current_wooticket_id[0], 'page', FALSE, $wpml_current_language); //Update post meta with the translated ID if ($translated_wooticket_id) { update_post_meta( $post_id, '_tribe_wooticket_for_event', $translated_wooticket_id ); } } } return; } - Créez l’événement et ajoutez-y des billets.
- Traduisez l’événement.
- Allez dans Produits → Tous les produits et modifiez le billet.
- Apportez une petite modification au billet et enregistrez.
- Traduisez le billet. N’oubliez pas que si l’événement existe déjà, il vous suffit de le traduire avant de traduire le billet. Si les deux sont déjà traduits, apportez une petite modification au billet d’origine, puis mettez à jour la traduction.
Si vous utilisez l’extension The Events Calendar, vous devrez remplacer cette ligne :
$translated_wooticket_id = apply_filters( 'wpml_object_id', $current_wooticket_id[0], 'page', FALSE, $wpml_current_language);Par :
$translated_wooticket_id = apply_filters( 'wpml_object_id', $current_wooticket_id[0], 'tribe_events', FALSE, $wpml_current_language);
Prochaines étapes
Event Tickets Plus et WPML ne sont pas encore totalement compatibles, mais nous souhaitons collaborer avec l’équipe de The Events Calendar pour y remédier. Si la compatibilité de cette extension avec WPML est importante pour vous, veuillez en informer l’équipe de The Events Calendar via son forum de support public ou ses canaux de support privés afin que nous puissions faire avancer les choses ensemble.