WPML
الحالة
في انتظار المطور
الإضافة/القالب ذو الصلة
The Events Calendar
وسوم الموضوع
Compatibility

نظرة عامة على المشكلة

إذا كنت تستخدم إضافة The Events Calendar، فقد تواجه مشكلات تتعلق بإعادة توجيه روابط تقويم الأحداث بشكل غير صحيح، حيث تعرض أنماطاً مثل (/?:month|monat|miesic|…).

حل بديل مؤقت

يرجى التأكد من أخذ نسخة احتياطية كاملة لموقعك قبل المتابعة.


  • افتح ملف functions.php الخاص بقالبك.

  • أضف الكود التالي:
    /*
    *  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;
    }
  • ثم، اذهب إلى إعدادات > الروابط الدائمة وأعد حفظ روابطك الدائمة.

ملاحظة: إذا استمرت المشكلة، يرجى فتح محادثة في قناة المساعدة الخاصة بنا.

جميع المشاكل المعروفة →