- Statut
- Résolu
- Signalé pour
- WPML Multilingual CMS 4.6.4
- Extension/thème associé
- The Events Calendar
- Étiquettes de sujet
- Compatibility
Aperçu de l’anomalie
Dans certaines situations, on observe une incohérence dans la façon dont les traductions des liens de calendrier sont gérées dans l’extension The Events Calendar (TEC) lorsqu’elle est utilisée avec WPML. Au lieu d’afficher le terme traduit attendu, le lien de date apparaît de manière incorrecte sous la forme (/?:month|monat|miesic|….), par exemple.
Remarque : Ce problème aurait dû être résolu. Cependant, nous avons reçu un signalement similaire récemment.
Solution de contournement
Veuillez vous assurer de disposer d’une sauvegarde complète de votre site avant de continuer.
- Allez dans Comptes > Votre profil et définissez votre langue par défaut comme langue de l’utilisateur.
- Allez dans Réglages > Permaliens et enregistrez à nouveau. Parfois, cette action résout le problème.
- Si ce n’est pas le cas, ajoutez le code suivant à votre fichier functions.php :
/* * WPML Workaround for compsupp-6815 */ add_filter( 'tribe_rewrite_canonical_url', 'wpml_compsupp6815_resolve_missing_urls', 10, 3 ); function wpml_compsupp6815_resolve_missing_urls( $resolved, $url, $object ) { if ( class_exists('Sitepress') ) { $wpml_default_lang = apply_filters('wpml_default_language', NULL ); $wpml_current_lang = apply_filters( 'wpml_current_language', NULL ); // Let's register the calendar strings so we can translate and use in the workaround if ($wpml_default_lang == $wpml_current_lang ) { $events_slug = $tec_options['eventsSlug']; $single_events_slug = $tec_options['singleEventSlug']; $tec_options = get_option('tribe_events_calendar_options'); do_action( 'wpml_register_single_string', 'the-events-calendar', 'TEC Calendar Slugs: '.substr($events_slug, 0, 20), $events_slug); do_action( 'wpml_register_single_string', 'the-events-calendar', 'TEC Calendar Slugs: '.substr($single_events_slug, 0, 20), $single_events_slug ); foreach ($tec_options['tribeEnableViews'] as $calendar_string) { do_action( 'wpml_register_single_string', 'the-events-calendar', 'TEC Calendar Slugs: '.substr($calendar_string, 0, 20), $calendar_string); } } // Check if the URL is not resolved yet. If not, we will resolve it with the translated strings if ( preg_match( '#/(/?:.+)#', $resolved ) ) { $resolved = preg_replace_callback( '#/(/?:.+?)#', function($matches) use ($url) { $options = explode('|', trim($matches[0], '/(?:)')); $slug = $options[0]; $translated_slug = apply_filters('wpml_translate_single_string', $slug , 'the-events-calendar', 'TEC Calendar Slugs: '.substr($slug, 0, 20) ); // Only apply the translation if the string already exists in the URL. If not, replace with the original. This may avoid possible 404 errors if (in_array(strtolower($translated_slug), $options) && $translated_slug != '') { $slug = $translated_slug; } return '/' . $slug; }, $resolved ); } } return $resolved; } - Allez dans Réglages > Permaliens et enregistrez à nouveau.
- Ensuite, vérifiez comment les permaliens fonctionnent sur l’interface publique pour chaque langue.
- Si le problème persiste, il se peut que vous ayez encore des chaînes non traduites. Dans ce cas, allez dans WPML > Traduction de chaînes et traduisez les chaînes avec le domaine de texte
the-events-calendaret le nomTEC Calendar Slugs: ****.