- Statut
- En attente de l’auteur
- Extension/thème associé
- The Events Calendar
- Étiquettes de sujet
- Compatibility
Aperçu de l’anomalie
Si vous utilisez l’extension The Events Calendar, vous pouvez rencontrer des problèmes avec les liens du calendrier d’événements qui redirigent de manière incorrecte, affichant des modèles tels que (/?:month|monat|miesic|…).
Solution de contournement
Veuillez vous assurer d’avoir une sauvegarde complète de votre site avant de continuer.
- Ouvrez le fichier functions.php de votre thème.
- Ajoutez le code suivant :
/* * WPML Workaround for compsupp-6815 (updated version for compsupp-7184) */ 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 ) { $tec_options = get_option('tribe_events_calendar_options'); $events_slug = $tec_options['eventsSlug']; $single_events_slug = $tec_options['singleEventSlug']; 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 ); // Check if there are parameters in the final result and correct the first "&" to "?" if (strpos($resolved, '&') !== false && strpos($resolved, '?') === false) { $resolved = preg_replace('/&/', '?', $resolved, 1); } } } return $resolved; } - Ensuite, allez dans Paramètres > Permaliens et enregistrez à nouveau vos permaliens.
Remarque : si le problème persiste, veuillez ouvrir un chat dans notre canal d’assistance.