- Statut
- Résolu par l’auteur
- Extension/thème associé
- WP Event Manager
- Étiquettes de sujet
- Compatibility
Aperçu de l’anomalie
Lors de la traduction d’événements créés avec WP Event Manager et WPML, les champs Organizer et Venue ne s’affichent pas toujours dans la langue par défaut sur l’interface publique.
Solution de contournement
Assurez-vous d’avoir une sauvegarde complète de votre site avant de continuer.
Vous devrez apporter les modifications suivantes.
- Allez dans WPML → Paramètres → Traduction des champs personnalisés
- Réglez les champs personnalisés _event_organizer_ids et _event_venue_ids sur Copier.
- Ensuite, ouvrez le fichier /wp-content/plugins/wp-event-manager/wp-event-manager-template.php.
- Cherchez la ligne 1229.
- Remplacez :
foreach ($post->_event_organizer_ids as $key => $organizer_id) {Par :
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 ); } - Ensuite, ouvrez le fichier /wp-content/plugins/wp-event-manager/wp-event-manager-functions.php.
- Cherchez la ligne 1903.
- Remplacez :
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 : ''; }Par :
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 : ''; } - Enfin, dans le même fichier, cherchez la ligne 1985.
- Remplacez :
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 : ''; }Par :
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 : ''; }