WPML
Status
Vom Autor gelöst
Zugehöriges Plugin/Theme
WP Event Manager
Themen-Tags
Compatibility

Übersicht über das Problem

Beim Übersetzen von Ereignissen, die mit WP Event Manager und WPML erstellt wurden, werden die Felder Organizer und Venue im Frontend nicht immer in der Standardsprache angezeigt.

Problemumgehung

Bitte stellen Sie sicher, dass Sie über ein vollständiges Backup Ihrer Website verfügen, bevor Sie fortfahren.

Sie müssen die folgenden Änderungen vornehmen.


  1. Gehen Sie zu WPMLEinstellungenÜbersetzung benutzerdefinierter Felder

  2. Setzen Sie die benutzerdefinierten Felder _event_organizer_ids und _event_venue_ids auf Kopieren.

  3. Öffnen Sie dann die Datei /wp-content/plugins/wp-event-manager/wp-event-manager-template.php.

  4. Suchen Sie nach Zeile 1229.

  5. Ändern Sie:
    foreach ($post->_event_organizer_ids as $key => $organizer_id) {

    zu:

    foreach ($post->_event_organizer_ids as $key => $organizer_id) {
    
    	// WPML Workaround for compsupp-6662
    	if (class_exists('SitePress')) {
    		$organizer_id = apply_filters( 'wpml_object_id', $organizer_id, 'event_organizer', TRUE  );
    	}


  6. Öffnen Sie als Nächstes die Datei /wp-content/plugins/wp-event-manager/wp-event-manager-functions.php.

  7. Suchen Sie nach Zeile 1903.

  8. Ändern Sie:
    function get_event_organizer_ids( $post = null ) {
    	$post = get_post( $post );
    
    	if ( $post->post_type !== 'event_listing' )
    		return;
    
    	return !empty($post->_event_organizer_ids) ? $post->_event_organizer_ids : '';
    }

    zu:

    function get_event_organizer_ids( $post = null ) {
    	$post = get_post( $post );
    
    	if ( $post->post_type !== 'event_listing' ) {
    		return;
    	}
    
    	// WPML Workaround for compsupp-6662
    	if ( class_exists('SitePress') && !empty($post->_event_organizer_ids) ) {
    		foreach ($post->_event_organizer_ids as $key => $organizer_id ) {
    			$result = $post->_event_organizer_ids;
    			$result[$key] = apply_filters( 'wpml_object_id', $organizer_id, 'event_organizer', TRUE  );
    		}
    
    		return $result;
    	}	
    
    	return !empty($post->_event_organizer_ids) ? $post->_event_organizer_ids : '';
    }

  9. Suchen Sie schließlich in derselben Datei nach Zeile 1985.

  10. Ändern Sie:
    function get_event_venue_ids( $post = null ) {
    	$post = get_post( $post );
    
    	if ( $post->post_type !== 'event_listing' )
    		return;
    
    	return !empty($post->_event_venue_ids) ? $post->_event_venue_ids : '';
    }

    zu:

    function get_event_venue_ids( $post = null ) {
    	$post = get_post( $post );
    
    	if ( $post->post_type !== 'event_listing' )
    		return;
    
    	// WPML Workaround for compsupp-6662
    	if ( class_exists('SitePress') && !empty($post->_event_venue_ids) ) {
    		$result = apply_filters( 'wpml_object_id', $post->_event_venue_ids , 'event_listing', TRUE  );
    		return $result;
    	}	
    
    	return !empty($post->_event_venue_ids) ? $post->_event_venue_ids : '';
    }

Alle bekannten Probleme →