WPML
Status
Warten auf Autor
Zugehöriges Plugin/Theme
Event Tickets Plus

Übersicht über das Problem

Wenn Sie das Plugin Event Tickets Plus verwenden, um ein neues Ereignis zu erstellen und diesem Tickets hinzuzufügen, wird der Ticket-Bereich auf der übersetzten Ereignisseite nicht angezeigt.

Problemumgehung

Bitte erstellen Sie ein vollständiges Backup Ihrer Website, bevor Sie fortfahren:

  1. Fügen Sie das folgende Snippet unter WPMLEinstellungenBenutzerdefinierte XML-Konfiguration hinzu:
     <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. Fügen Sie den folgenden Code zur Datei functions.php hinzu:
     
    //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. Erstellen Sie das Ereignis und fügen Sie ihm Tickets hinzu.
  4. Übersetzen Sie das Ereignis.
  5. Gehen Sie zu ProdukteAlle Produkte und bearbeiten Sie das Ticket.
  6. Nehmen Sie eine kleine Änderung am Ticket vor und speichern Sie.
  7. Übersetzen Sie das Ticket. Denken Sie daran, dass Sie das Ereignis, falls es bereits existiert, vor der Übersetzung des Tickets übersetzen müssen. Wenn beide bereits übersetzt sind, nehmen Sie eine kleine Änderung am Original-Ticket vor und aktualisieren Sie dann die Übersetzung.

Wenn Sie das Plugin The Events Calendar verwenden, müssen Sie diese Zeile ändern:

 $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); 

Nächste Schritte

Event Tickets Plus und WPML sind noch nicht vollständig kompatibel, aber wir möchten mit dem Team von The Events Calendar zusammenarbeiten, um dies abzuschließen. Wenn Ihnen die Kompatibilität dieses Plugins mit WPML wichtig ist, teilen Sie dies dem Team von The Events Calendar bitte über deren öffentliches Support-Forum oder die privaten Support-Kanäle mit, damit wir versuchen können, dies gemeinsam voranzutreiben.

Alle bekannten Probleme →