WPML
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 :

  1. Ajoutez l’extrait suivant dans WPMLParamètresConfiguration 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>
  2. 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;
    }
  3. Créez l’événement et ajoutez-y des billets.
  4. Traduisez l’événement.
  5. Allez dans ProduitsTous les produits et modifiez le billet.
  6. Apportez une petite modification au billet et enregistrez.
  7. 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.

Toutes les anomalies connues →