WPML
Stato
In attesa dell’autore
Plugin/tema correlato
Event Tickets Plus

Panoramica del problema

Quando usi il plugin Event Tickets Plus per creare un nuovo evento e aggiungervi dei biglietti, la sezione dei biglietti non appare nella pagina dell’evento tradotta.

Soluzione alternativa

Prima di procedere, esegui un backup completo del tuo sito:

  1. Aggiungi il seguente snippet a WPMLImpostazioniConfigurazione XML personalizzata:
     <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. Aggiungi il seguente codice al file 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. Crea l’evento e aggiungi i biglietti.
  4. Traduci l’evento.
  5. Vai su ProdottiTutti i prodotti e modifica il biglietto.
  6. Apporta una piccola modifica al biglietto e salva.
  7. Traduci il biglietto. Tieni presente che se l’evento esiste già, devi solo tradurlo prima di tradurre il biglietto. Se entrambi sono già stati tradotti, apporta una piccola modifica al biglietto originale, quindi aggiorna la traduzione.

Se stai usando il plugin The Events Calendar, dovrai modificare questa riga:

 $translated_wooticket_id = apply_filters( 'wpml_object_id', $current_wooticket_id[0], 'page', FALSE, $wpml_current_language); 
in:
 $translated_wooticket_id = apply_filters( 'wpml_object_id', $current_wooticket_id[0], 'tribe_events', FALSE, $wpml_current_language); 

Passaggi successivi

Event Tickets Plus e WPML non sono ancora del tutto compatibili, ma vorremmo collaborare con il team di The Events Calendar per risolvere questo problema. Se la compatibilità di questo plugin con WPML è importante per te, comunicalo al team di The Events Calendar tramite il loro forum di supporto pubblico o i canali di supporto privati, così potremo cercare di portare avanti la questione insieme.

Tutti i problemi noti →