- Estado
- Resuelto
- Notificado para
- WPML Multilingual CMS 4.6.4
- Plugin/tema relacionado
- The Events Calendar
- Etiquetas de temática
- Compatibility
Resumen del problema
En ciertas situaciones, existe una discrepancia en cómo se manejan las traducciones de los enlaces del calendario en el plugin The Events Calendar (TEC) cuando se usa con WPML. En lugar de mostrar el término traducido esperado, el enlace de la fecha aparece incorrectamente como (/?:month|monat|miesic|….), por ejemplo.
Nota: Este problema debería haberse resuelto. Sin embargo, recibimos un informe similar recientemente.
Solución alternativa
Por favor, asegúrese de tener una copia de seguridad completa de su sitio antes de continuar.
- Vaya a Usuarios > Su perfil y establezca su idioma predeterminado como idioma del usuario.
- Vaya a Configuración > Enlaces permanentes y vuelva a guardar. A veces esta acción resuelve el problema.
- Si no es el caso, añada el siguiente código a su archivo 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; } - Vaya a Configuración > Enlaces permanentes y vuelva a guardar de nuevo.
- Después de eso, compruebe cómo funcionan los enlaces permanentes en el front-end para cada idioma.
- Si el problema persiste, es posible que aún tenga algunas cadenas sin traducir. En ese caso, vaya a WPML > Traducción de cadenas y traduzca las cadenas con el dominio de texto
the-events-calendary el nombreTEC Calendar Slugs: ****.