- סטטוס
- נפתר
- דווח עבור
- WPML Multilingual CMS 4.6.4
- תוסף/ערכת עיצוב קשורים
- The Events Calendar
- תגיות נושא
- Compatibility
סקירה כללית של התקלה
במצבים מסוימים, קיימת אי־התאמה באופן שבו מטופלים תרגומים של קישורי לוח השנה בתוסף The Events Calendar (TEC) בשימוש עם WPML. במקום להציג את המונח המתורגם הצפוי, קישור התאריך מופיע באופן שגוי בתור (/?:month|monat|miesic|….), לדוגמה.
הערה: בעיה זו הייתה אמורה להיפתר. עם זאת, קיבלנו דיווח דומה לאחרונה.
פתרון עוקף
אנא ודא שיש לך גיבוי מלא של האתר לפני שתמשיך.
- עבור אל משתמשים > הפרופיל שלך והגדר את שפת ברירת המחדל שלך כשפת המשתמש.
- עבור אל הגדרות > קישורים קבועים ושמור מחדש. לעיתים פעולה זו פותרת את הבעיה.
- אם זה אינו המצב, הוסף את הקוד הבא לקובץ 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; } - עבור אל הגדרות > קישורים קבועים ושמור שוב מחדש.
- לאחר מכן, בדוק כיצד הקישורים הקבועים עובדים בצד הלקוח עבור כל שפה.
- אם הבעיה נמשכת, ייתכן שעדיין יש לך כמה מחרוזות לא מתורגמות. במקרה כזה, עבור אל WPML > תרגום מחרוזות ותרגם את המחרוזות עם ה־textdomain
the-events-calendarוה־nameTEC Calendar Slugs: ****.