تم حل هذا الموضوع. هنا وصف للمشكلة والحل.
Problem:
إذا كنت تواجه مشكلة في ظهور تكرار في اسم اللغة وبعض الرموز الغريبة في محول اللغات المضاف إلى القائمة، فقد يكون ذلك بسبب تعارض مع إضافة Unlimited Addons For Elementor أو Animation Addons for Elementor.
Solution:
أولاً، جرب إضافة محول اللغة مباشرة على الرأسية بدلاً من استخدام الطريقة القديمة. إذا كنت تستخدم Animation Addons for Elementor، قد تحتاج إلى تعديل الكود في الملف
walker-nav-menu.php
على السطر 250. قم بتغيير الكود من:
// Before (problematic):<br />$item_output .= $args->link_before .'<span class="menu-text" data-text="'.$title.'">'. $title .'</span>'. $args->link_after;
إلى:
// After (fixed):<br />$decoded_title = html_entity_decode($title, ENT_QUOTES | ENT_HTML5, 'UTF-8');<br />$item_output .= $args->link_before .'<span class="menu-text" data-text="'.$decoded_title.'">'. $title .'</span>'. $args->link_after;
إذا لم تحل هذه الخطوات المشكلة، فنحن نوصي بالتواصل مع فريق دعم Animation Addons for Elementor لمعالجة التعارض. كما نوصي بزيارة صفحة المشاكل المعروفة للتحقق من وجود مشاكل معروفة والتأكد من أنك تستخدم أحدث إصدارات الإضافات والقوالب. إذا استمرت المشكلة، يرجى فتح تذكرة دعم جديدة.
هنا منتدى الدعم الفني لـ WPML - ملحق WordPress متعدد اللغات.
يمكن للجميع قراءة المواضيع، ولكن عملاء WPML فقط هم من يمكنهم النشر هنا. يقوم فريق WPML بالرد على موضوعات المنتدى على مدار 6 أيام في الأسبوع، 22 ساعة في اليوم.
الوسوم: Compatibility, Custom Work
الكاتب | المشاركات |
---|---|
أغسطس 14, 2025 في 7:39 ص #17319997 | |
mohamamdA |
نبذة عن المشكلة: أعراض: أسئلة: |
أغسطس 14, 2025 في 4:24 م #17321639 | |
Ilyes مؤيد، مشجع، داعم
اللغات: الإنجليزية (English ) الفرنسية (Français ) العربية (العربية ) وحدة زمنية: Pacific/Easter (GMT-05:00) |
مرحبًا، من المهم الانتباه إلى أنه يجب عليك نسخ موقعك وقاعدة بياناتك احتياطيًا قبل المتابعة، ويمكنك استخدام مكون إضافي مثل Duplicator لهذا الغرض. لأسباب تتعلق بالخصوصية والأمان، تأكد من أن ردك خاص. |
أغسطس 18, 2025 في 7:32 ص #17326362 | |
mohamamdA |
مرحبا هل من جديد من فضلك ؟ |
أغسطس 18, 2025 في 2:47 م #17328303 | |
Ilyes مؤيد، مشجع، داعم
اللغات: الإنجليزية (English ) الفرنسية (Français ) العربية (العربية ) وحدة زمنية: Pacific/Easter (GMT-05:00) |
أنا أقوم حالياً بفحص موقعك، نحن لا نعمل خلال أيام العطلة الأسبوعية، ولهذا السبب لم نبدأ العمل على هذا الموقع لحد الآن. |
أغسطس 18, 2025 في 3:26 م #17328443 | |
Ilyes مؤيد، مشجع، داعم
اللغات: الإنجليزية (English ) الفرنسية (Français ) العربية (العربية ) وحدة زمنية: Pacific/Easter (GMT-05:00) |
السلام عليكم، يبدو أن هذا يخص Unlimited Addons For Elementor (UAE) بشكل مباشر، فإذا أضفت مبدل اللغة إلى أسفل الصفحة، فإنه يعمل بشكل جيد: الرابط المخفي لذا تحققت من كيفية إنشاء الرأسية ورأيت أنها جزء من رأسية قالب تم إنشاؤها باستخدام UAE لذا كحل بديل، أضفت مبدل اللغة مباشرة على الرأسية كما يلي: الرابط المخفي أخبرني إذا كان هذا الحل بديلاً جيدًا، لأن UAE يتسبب في تعارض بسيط في كيفية تحميل أداة تبديل اللغة (يتم تحميلها مرتين) |
أغسطس 25, 2025 في 7:24 ص #17343908 | |
mohamamdA |
اهلا .. شكرا لك .. حل جيد ولكن المشكلة مستمرة على نسخة الموبايل هل يمكنك التحقق |
أغسطس 25, 2025 في 10:24 م #17346445 | |
Ilyes مؤيد، مشجع، داعم
اللغات: الإنجليزية (English ) الفرنسية (Français ) العربية (العربية ) وحدة زمنية: Pacific/Easter (GMT-05:00) |
مرحبًا، الحل البديل الذي قمت به لإصدار الموقع العادي لا ينطبق على إصدار الموقع للجوال، حيث لا يزال هذا الإصدار يستخدم الطريقة القديمة لاستدعاء المحوّل (وهي الطريقة الوحيدة الممكنة أيضًا). ما اكتشفته: السبب الأساسي: كان أداة التنقل في قائمة التنقل الخاصة بمكوّن Animation Addons for Elementor الإضافي تأخذ العناوين التي تمت معالجتها بواسطة WPML (والتي تحتوي على كيانات HTML مثل >) وتضعها مباشرة في سمات نص البيانات دون فك تشفيرها أولاً. المكوّن الإضافي: Animation Addons for Elementor حل ممكن هو تغيير الكود // Before (problematic): $item_output .= $args->link_before .'<span class="menu-text" data-text="'.$title.'">'. $title .'</span>'. $args->link_after; إلى // After (fixed): $decoded_title = html_entity_decode($title, ENT_QUOTES | ENT_HTML5, 'UTF-8'); $item_output .= $args->link_before .'<span class="menu-text" data-text="'.$decoded_title.'">'. $title .'</span>'. $args->link_after; هذه مشكلة تتعلق بوجود تعارض، وأعتقد أنه من الأفضل أن يتولى فريق هذا المكون الإضافي Animation Addons for Elementor معالجتها، فهل يمكنك مشاركتهم النتائج التي توصلت إليها ؟ فهم يعرفون كودهم أفضل منا، ولديهم معرفة أكبر بكيفية إصلاح هذه المشكلة من جهتهم. |
أغسطس 27, 2025 في 7:01 ص #17350169 | |
mohamamdA |
مرحبا, قمت بالغاء تفعيل البلجن Animation Addons for Elementor ولكن لم يتم حل المشكلة .واستمرت .. هل يمكنك حلها من جهتك على الموبايل ..باي طريقة لان الدعم Animation Addons for Elementor تابع للثيم وانتهى السبورت الخاص بهم . في انتظار السماع منك |
أغسطس 27, 2025 في 2:32 م #17352318 | |
Ilyes مؤيد، مشجع، داعم
اللغات: الإنجليزية (English ) الفرنسية (Français ) العربية (العربية ) وحدة زمنية: Pacific/Easter (GMT-05:00) |
في هذه الحالة، لتغيير الكود الخاص بك بأمان، أحتاج إلى وصول FTP وتأكيد منك بأن النسخة الاحتياطية قد تمت قبل إجراء أي تغييرات. |
سبتمبر 1, 2025 في 8:04 م #17364021 | |
Ilyes مؤيد، مشجع، داعم
اللغات: الإنجليزية (English ) الفرنسية (Français ) العربية (العربية ) وحدة زمنية: Pacific/Easter (GMT-05:00) |
مرحبًا، وصول FTP يعمل بشكل جيد، سأعاود الاتصال بك بمجرد حل المشكلة. |
سبتمبر 2, 2025 في 10:37 م #17367830 | |
Ilyes مؤيد، مشجع، داعم
اللغات: الإنجليزية (English ) الفرنسية (Français ) العربية (العربية ) وحدة زمنية: Pacific/Easter (GMT-05:00) |
مرحبًا، بعد عملية تصحيح أخطاء طويلة، تمكنت من حل هذه المشكلة فقط باستخدام كود مخصص في PHP، أضفت هذا الكود إلى ملف functions.php الخاص بقالبك: /** * Add WPML Language Switcher to WCF Mobile Menu (English & Arabic) */ function add_wpml_to_wcf_mobile_menu() { ?> <script type="text/javascript"> document.addEventListener('DOMContentLoaded', function() { // Find both English and Arabic mobile menus const wcfMenu = document.querySelector('ul#menu-main-menu-mob') || // English menu document.querySelector('ul#menu-primary-menu-mobile-arabic') || // Arabic menu document.querySelector('ul.wcf-nav-menu-nav') || // Generic fallback document.querySelector('.wcf-nav-menu-container ul'); // Container fallback if (wcfMenu) { console.log('WPML Debug: Menu found:', wcfMenu.id || wcfMenu.className); // Create language switcher element const languageSwitcher = document.createElement('li'); languageSwitcher.className = 'menu-item wcf-mobile-language-switcher'; languageSwitcher.style.cssText = 'border-top: 1px solid #eee; padding: 10px 0; margin-top: 10px;'; // Generate language switcher content <?php $language_switcher_html = ''; // Try WPML action first if ( has_action( 'wpml_add_language_selector' ) ) { ob_start(); do_action( 'wpml_add_language_selector' ); $wpml_output = ob_get_clean(); if ( ! empty( trim( $wpml_output ) ) ) { // Properly escape for JavaScript $language_switcher_html = str_replace( array( "\r", "\n", "\t" ), ' ', $wpml_output ); $language_switcher_html = str_replace( "'", "\\'", $language_switcher_html ); $language_switcher_html = str_replace( '"', '\\"', $language_switcher_html ); } } // Fallback to direct WPML function if ( empty( $language_switcher_html ) && function_exists( 'icl_get_languages' ) ) { $languages = icl_get_languages( 'skip_missing=0&orderby=code' ); if ( ! empty( $languages ) && count( $languages ) > 1 ) { $html = '<div class="wpml-mobile-language-switcher" style="text-align: center; padding: 5px;">'; foreach( $languages as $l ) { $flag = $l['country_flag_url'] ? '<img src="' . esc_url( $l['country_flag_url'] ) . '" alt="' . esc_attr( $l['native_name'] ) . '" style="width: 16px; height: 12px; margin-right: 5px; vertical-align: middle;" />' : ''; $active_class = $l['active'] ? 'font-weight: bold; color: #007cba;' : 'color: #666;'; $html .= '<a href="' . esc_url( $l['url'] ) . '" style="text-decoration: none; margin: 0 8px; display: inline-block; ' . $active_class . '">'; $html .= $flag . esc_html( $l['native_name'] ); $html .= '</a>'; } $html .= '</div>'; // Properly escape for JavaScript $language_switcher_html = str_replace( array( "\r", "\n", "\t" ), ' ', $html ); $language_switcher_html = str_replace( "'", "\\'", $language_switcher_html ); $language_switcher_html = str_replace( '"', '\\"', $language_switcher_html ); } } if ( ! empty( $language_switcher_html ) ) { echo "languageSwitcher.innerHTML = '" . $language_switcher_html . "';"; } else { echo "languageSwitcher.innerHTML = '<div style=\"text-align: center; padding: 5px;\"><a href=\"#\" style=\"color: #007cba; text-decoration: none;\">🌐 Language Switcher</a><br><small style=\"color: #666;\">WPML needs configuration</small></div>';"; } ?> wcfMenu.appendChild(languageSwitcher); console.log('WPML Debug: Language switcher added successfully!'); } else { console.log('WPML Debug: No mobile menu found'); } }); </script> <?php } add_action( 'wp_footer', 'add_wpml_to_wcf_mobile_menu' ); |
سبتمبر 3, 2025 في 5:59 ص #17368111 | |
mohamamdA |
مرحبا, شكرا لمساعدتك , هل هذا الحل يختفي مع تحديث القالب ؟ هل يجب استخدام بلجن مثل wp code لاضافته لكي لا يختفي عند التحديث انا استخدم ثيم hello النسخة المجانية ولا اعتقد انه يوجد نسخة child منه . وهل يمكن جعل اللغة الاصلية تظهر فقط وليس بشكل متكرر من فضلك شكرا لردك |
سبتمبر 5, 2025 في 2:04 م #17379779 | |
Ilyes مؤيد، مشجع، داعم
اللغات: الإنجليزية (English ) الفرنسية (Français ) العربية (العربية ) وحدة زمنية: Pacific/Easter (GMT-05:00) |
لقد أزلت الترجمة المزدوجة للغة، ويظهر الآن المبدل اسم اللغة باللغة الأصلية. وأنت على حق، بما أنك لا تستخدم سمة فرعية، يجب إضافة الكود أعلاه على مقتطف أو كمكوّن إضافي مخصص لفصله عن تحديثات السمة. |
سبتمبر 7, 2025 في 6:22 ص #17381487 | |
mohamamdA |
شكرا لك , هل يمكنك تزويدي بالكود كاملا بعد الاصلاح الخاص بالموبايل واين يمكن اضيفها في اداة WPCode من فضلكم؟ ارفقت لك سكرين شوت للننظر في الطريقة التي استخدمتها ولكنها عملت على نسخة الديسكتوب وليس على الموبايل. |
سبتمبر 10, 2025 في 6:55 م #17392078 | |
Ilyes مؤيد، مشجع، داعم
اللغات: الإنجليزية (English ) الفرنسية (Français ) العربية (العربية ) وحدة زمنية: Pacific/Easter (GMT-05:00) |
مرحبًا، الطريقة التي أضفتها صحيحة على WPcode، أما بالنسبة للجوال فهناك شيء آخر يجب تغييره في أداة التبديل. من WPML > اللغات، قمت بحذف جميع أدوات تبديل لغة القائمة واستخدمت أداة التبديل المخصصة بدلاً من ذلك للجوال: الرابط المخفي ولكن بخلاف ذلك، يبدو أن الكود صحيح، وإليك نسخة أخرى احتياطياً: /** * Add WPML Language Switcher to WCF Mobile Menu (English & Arabic) */ function add_wpml_to_wcf_mobile_menu() { ?> <script type="text/javascript"> document.addEventListener('DOMContentLoaded', function() { // Find both English and Arabic mobile menus const wcfMenu = document.querySelector('ul#menu-main-menu-mob') || // English menu document.querySelector('ul#menu-primary-menu-mobile-arabic') || // Arabic menu document.querySelector('ul.wcf-nav-menu-nav') || // Generic fallback document.querySelector('.wcf-nav-menu-container ul'); // Container fallback if (wcfMenu) { console.log('WPML Debug: Menu found:', wcfMenu.id || wcfMenu.className); // Create language switcher element const languageSwitcher = document.createElement('li'); languageSwitcher.className = 'menu-item wcf-mobile-language-switcher'; languageSwitcher.style.cssText = 'border-top: 1px solid #eee; padding: 10px 0; margin-top: 10px;'; // Generate language switcher content <?php $language_switcher_html = ''; // Try WPML action first if ( has_action( 'wpml_add_language_selector' ) ) { ob_start(); do_action( 'wpml_add_language_selector' ); $wpml_output = ob_get_clean(); if ( ! empty( trim( $wpml_output ) ) ) { // Properly escape for JavaScript $language_switcher_html = str_replace( array( "\r", "\n", "\t" ), ' ', $wpml_output ); $language_switcher_html = str_replace( "'", "\\'", $language_switcher_html ); $language_switcher_html = str_replace( '"', '\\"', $language_switcher_html ); } } // Fallback to direct WPML function if ( empty( $language_switcher_html ) && function_exists( 'icl_get_languages' ) ) { $languages = icl_get_languages( 'skip_missing=0&orderby=code' ); if ( ! empty( $languages ) && count( $languages ) > 1 ) { $html = '<div class="wpml-mobile-language-switcher" style="text-align: center; padding: 5px;">'; foreach( $languages as $l ) { $flag = $l['country_flag_url'] ? '<img src="' . esc_url( $l['country_flag_url'] ) . '" alt="' . esc_attr( $l['native_name'] ) . '" style="width: 16px; height: 12px; margin-right: 5px; vertical-align: middle;" />' : ''; $active_class = $l['active'] ? 'font-weight: bold; color: #007cba;' : 'color: #666;'; $html .= '<a href="' . esc_url( $l['url'] ) . '" style="text-decoration: none; margin: 0 8px; display: inline-block; ' . $active_class . '">'; $html .= $flag . esc_html( $l['native_name'] ); $html .= '</a>'; } $html .= '</div>'; // Properly escape for JavaScript $language_switcher_html = str_replace( array( "\r", "\n", "\t" ), ' ', $html ); $language_switcher_html = str_replace( "'", "\\'", $language_switcher_html ); $language_switcher_html = str_replace( '"', '\\"', $language_switcher_html ); } } if ( ! empty( $language_switcher_html ) ) { echo "languageSwitcher.innerHTML = '" . $language_switcher_html . "';"; } else { echo "languageSwitcher.innerHTML = '<div style=\"text-align: center; padding: 5px;\"><a href=\"#\" style=\"color: #007cba; text-decoration: none;\">🌐 Language Switcher</a><br><small style=\"color: #666;\">WPML needs configuration</small></div>';"; } ?> wcfMenu.appendChild(languageSwitcher); console.log('WPML Debug: Language switcher added successfully!'); } else { console.log('WPML Debug: No mobile menu found'); } }); </script> <?php } add_action( 'wp_footer', 'add_wpml_to_wcf_mobile_menu' ); |