إذا ظهرت صفحة Avada الخاصة بك فجأةً معطوبة (أعمدة متراصة، هوامش غير منطقية، شريط تمرير ممتلئ)، فنادرًا ما تكمن المشكلة في Avada نفسها. في تجربتي، يكون السبب دائمًا تقريبًا تعارضًا في ملفات CSS/JS، أو استخدام ذاكرة تخزين مؤقت مفرطة، أو إضافة CSS عامة على عجل إلى القالب الفرعي.
المشكلة
تظهر تعارضات تصميم Avada (Fusion Builder) غالبًا دون ظهور رسالة واضحة على الشاشة. يمكنك رؤيتها في واجهة المستخدم، وأحيانًا على الهاتف المحمول فقط، وأحيانًا أخرى فقط عند تسجيل الدخول.
عند ظهور رسالة، غالباً ما أجد أخطاء جافا سكريبت في وحدة تحكم المتصفح أو أخطاء PHP في سجلات النظام. أمثلة واقعية:
Uncaught TypeError: Cannot read properties of undefined (reading 'init')
at fusionBuilderApp.init (fusion-builder.min.js:1)
Uncaught ReferenceError: jQuery is not defined
at fusion-something.min.js:1
PHP Fatal error: Uncaught Error: Call to undefined function fusion_library() in /wp-content/themes/Avada-child/functions.php:42
متى وأين يظهر:
- الواجهة الأمامية : أعمدة تصبح 100%، وحاويات تفقد عرضها، وعناصر تتداخل.
- إداري : لم يعد محرر Avada Builder يعمل، ومؤشر التحميل لا نهائي، والأزرار غير نشطة.
- بعد التحديث تم تحديث Avada/Avada Core/Avada Builder، ثم تم تحديث ذاكرة التخزين المؤقت/التحسين الذي لا يزال يستخدم الملفات القديمة.
- بعد تفعيل الملحق : التحسين (التصغير/الدمج)، والأمان (تعطيل REST)، ومكون إضافي عالمي لـ CSS/JS، ومكون إضافي "للأداء" يختلف عن jQuery.
لمن هذا البرنامج؟ إذا كنت مبتدئًا في WordPress 6.9.4 (أبريل 2026) وكنت تستخدم Avada/Fusion Builder، ستعرف ذلك في النهاية:
- حدد ما إذا كانت المشكلة ناتجة عن CSS أو JS أو ذاكرة التخزين المؤقت أو تعارض في أحد المكونات الإضافية.
- قم بتطبيق 3 إصلاحات شائعة، مع وضع الكود الآمن (PHP 8.1+) في المكان الصحيح.
- اختبر بشكل صحيح (وحدة التحكم، مراقبة الاستعلام، فحص الحالة) دون "تعطيل" موقع الإنتاج الخاص بك.
ملخص سريع
- ابدأ بمسح جميع ذاكرات التخزين المؤقت. (المكون الإضافي، الخادم/شبكة توصيل المحتوى، المتصفح): هذا هو السبب رقم 1 بعد تحديث Avada.
- تعطيل تحسين CSS/JS مؤقتًا (دمج/تأخير/تأجيل): برنامج Avada Builder حساس لترتيب التحميل.
- تتبع ملف CSS العالمي تمت إضافته في "CSS المخصص"، أو القالب الفرعي، أو إضافة: بسيط
.container{width:100%}يكفي لتدمير شبكة أفادا. - تحقق من وحدة تحكم المتصفح : A
jQuery is not definedغالباً ما يفسر ذلك حالة المقاول الذي لم يعد يستجيب. - تشخيص بدون مخاطرة مع فحص الصحة (وضع استكشاف الأخطاء وإصلاحها) + مراقبة الاستعلامات، على ووردبريس 6.9.4.
الأعراض
هذه هي الأعراض التي أراها غالباً في برنامج Avada (Fusion Builder / Avada Builder). قد تتواجد عدة أعراض معاً.
- أعمدة متراصة : يصبح الصف 1/2 + 1/2 هو 100% + 100% حتى على سطح المكتب.
- عرض "الصفحة الكاملة" مكسور : تصبح الحاويات ذات العرض الكامل "مؤطرة" أو على العكس من ذلك تفيض أفقيًا (التمرير X).
- مساحات غير متماسكة : هوامش/حشوات مزدوجة، أقسام "مضغوطة"، عناوين ملصقة.
- الخطوط/الأيقونات المفقودة أيقونات Invisible Font Awesome، وعناوين بخط احتياطي.
- أداة بناء لا تعمل في وضع المسؤول: شاشة بيضاء، مؤشر تحميل، أزرار لا تستجيب.
- الرموز المختصرة المعروضة في النص هل ترى
[fusion_text]بدلاً من المحتوى المُقدّم. - أخطاء 404 في CSS/JS : الملفات في
/wp-content/uploads/fusion-styles/ou/wp-content/cache/غير موجود. - الاختلافات بين المتصل وغير المتصل : نموذجي لذاكرة التخزين المؤقت للصفحة أو "التأخير" في جافا سكريبت الذي يتم تطبيقه فقط على الزوار.
مخطط تشخيصي سريع (مفيد عندما لا تعرف من أين تبدأ):
| عرض | السبب المحتمل | التحقق | الحلول |
|---|---|---|---|
| أعمدة معطوبة بعد التحديث | ذاكرة التخزين المؤقت + ملفات CSS المدمجة القديمة | اختبر في وضع التصفح الخاص + امسح ذاكرة التخزين المؤقت للملحقات/شبكة توصيل المحتوى | الحل 1 (تعطيل الدمج/التأخير، والتنظيف، وإعادة التوليد) |
| التمرير الأفقي (العرض الزائد) | CSS العالمي html, body / .container / img |
أداة الفحص (أدوات مطوري Chrome) ← عنصر يمتد إلى ما وراء | الحل 2 (صحيح (CSS عالمي، غلاف Avada) |
| لم يعد مسؤول البناء يستجيب. | خطأ في جافا سكريبت (jQuery، defer، تعارض في المكونات الإضافية) | وحدة التحكم ← أخطاء حمراء + علامة تبويب الشبكة | المحلول 1 + المحلول 3 |
| الرموز المختصرة المعروضة | تم تعطيل إضافة Avada Builder/Core، فلتر المحتوى، كتلة HTML الخام | هل الإضافات → Avada Core/Builder نشطة؟ | الحل الثالث (ترتيب الخطافات، المحتوى، الأمان) |
| CSS/JS 404 | تم حذف الأذونات، وذاكرة التخزين المؤقت، وإعادة الكتابة، وشبكة توصيل المحتوى، والملفات المُنشأة. | الشبكة ← حالة 404 + المسار الدقيق | حذف الملفات + إعادة إنشائها + التحقق من الأذونات/إعادة الكتابة |
لماذا وصلت؟
النسخة البسيطة (للمبتدئين): يقوم برنامج Avada ببناء تخطيطاتك باستخدام مزيج من CSS (من أجل الشبكة، والتباعد، والاستجابة) و جافا سكريبت (بالنسبة للوحدات التفاعلية، أداة الإنشاء، بعض التأثيرات). إذا قام أحد المكونات الإضافية بتغيير ترتيب التحميل، أو حذف ملف، أو عرض نسخة مخزنة مؤقتًا، فسيختل تصميم الصفحة.
إليكم ما يحدث خلف الكواليس (بشكل أكثر تقنية):
- Avada ومكوناته الإضافية (Avada Core / Avada Builder) حفظ وتحميل الأصول عبر واجهة برمجة تطبيقات ووردبريس (
wp_enqueue_scriptsالجانب الأمامي،admin_enqueue_scripts(من جانب الإدارة). المرجع: wp_enqueue_script (). - تقوم إضافات التحسين بإعادة كتابة كود HTML النهائي: فهي تجمع وتضغط وتؤجل تنفيذ البرامج النصية. قد يتم تنفيذ برنامج Avada النصي، الذي من المفترض أن يعمل بعد jQuery أو وحدة أخرى، في وقت مبكر جدًا.
- يمكن لملف CSS عام (قالب فرعي، "CSS مخصص"، إضافة) أن يتجاوز المحددات العامة جدًا. لقد رأيت ذلك كثيرًا
*{box-sizing:border-box}أو أن إعادة الضبط العدوانية تُعطل حسابات العرض. - قد يقوم نظام التخزين المؤقت (المكوّن الإضافي + شبكة توصيل المحتوى + المتصفح) بعرض ملف قديم. بعد تحديث Avada، يشير ملف HTML إلى نسخة جديدة، لكن شبكة توصيل المحتوى تُعيد النسخة القديمة، أو العكس.
الأسباب المحتملة، من الأكثر شيوعاً إلى الأقل شيوعاً:
- التخزين المؤقت/التحسين يجمع بين CSS/JS، وتأخير JS، و"إزالة CSS غير المستخدم"، وذاكرة التخزين المؤقت للصفحة.
- CSS global واسع جدًا (قالب فرعي، CSS مخصص، إضافة) يؤثر
.container,.row,img,iframe,body. - تعارض جافا سكريبت : jQuery مؤجل، نص برمجي مكرر، خطأ في جافا سكريبت من إضافة خارجية.
- عدم تزامن Avada Core / Avada Builder : إصدارات غير متوافقة، أو تم تعطيل أحد المكونات الإضافية.
- قواعد إعادة الكتابة / الأذونات : الملفات المُنشأة غير قابلة للوصول، خطأ 403/404 في الأصول.
- مشاكل في الخادم : تم تكوين HTTP/2 push بشكل خاطئ، إعادة كتابة Brotli/CDN، جدار حماية تطبيقات الويب يحظر REST/AJAX.
المتطلبات الأساسية قبل البدء
احفظ عملك قبل إجراء أي تغييرات. لا تقم أبدًا بتعديل ملفات نظام ووردبريس الأساسي أو ملفات قالب Avada الرئيسي: اعمل في بيئة نظيفة وغير معدلة. موضوع الطفل أو المكونات الإضافية المخصصة.
- WordPress : 6.9.4 (أو أحدث).
- PHP يُوصى بحد أدنى 8.1 (غالباً ما يكون 8.2/8.3 أكثر راحة). المرجع: PHP: الإصدارات المدعومة.
- أدوات :
- مراقبة الاستعلام (مجاني) لعرض أخطاء PHP، والخطافات، والاستعلامات، والبرامج النصية/الأنماط المحملة: wordpress.org/plugins/query-monitor.
- فحص الصحة واستكشاف الأخطاء وإصلاحها لتعطيل الإضافات/القوالب الخاصة بك فقط (وضع استكشاف الأخطاء وإصلاحها): wordpress.org/plugins/health-check.
- تفعيل التسجيل (مؤقتاً) عبر
wp-config.phpلالتقاط الأخطاء، وفقًا للوثائق: تصحيح في وورد.
مثال على إعدادات تصحيح الأخطاء (سيتم إرسالها إلى false (بمجرد اكتمال التشخيص):
/**
* Active le debug WordPress (à désactiver après dépannage).
* À placer dans wp-config.php, avant "That's all, stop editing!".
*/
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
الحل الأول: تحميل ملفات CSS/JS بترتيب خاطئ (الأولويات، التحسين، التخزين المؤقت)
الأعراض الشائعة: خلل في تصميم الصفحة بعد التحديث، وحدات Avada غير نشطة، عدم استجابة أداة البناء، أخطاء في وحدة التحكم jQuery is not defined ou Cannot read properties of undefined.
غالباً ما تنشأ المشكلة من إضافة لتحسين الأداء تقوم بما يلي:
- دمج CSS/JS،
- يختلف (يؤجل) أو يؤخر (يؤخر) البرامج النصية،
- انقل jQuery إلى تذييل الصفحة.
- أو يحذف الملفات التي تعتبر "غير ضرورية".
الخطوة 1 (بدون رمز): اختبار سريع في وضع استكشاف الأخطاء وإصلاحها
مع فحص الصحة، قم بتفعيل وضع استكشاف الأخطاء وإصلاحها (أنت وحدك من يستطيع رؤيته)، إذن:
- قم بتعطيل إضافة التحسين (Autoptimize، WP Rocket، LiteSpeed Cache، إلخ).
- قم بمسح ذاكرة التخزين المؤقت لبرنامج Avada (في Avada > الأداء / ذاكرة التخزين المؤقت حسب إصدارك)، ثم ذاكرة التخزين المؤقت للملحقات، ثم ذاكرة التخزين المؤقت لشبكة توصيل المحتوى (CDN).
- أعد تحميل الصفحة في وضع التصفح الخاص.
إذا عاد كل شيء إلى طبيعته: فقد تأكدت من وجود تعارض في الأصول. انتقل إلى الخطوة 2.
الخطوة الثانية (مع الكود): منع حدوث "تأخير/تأخر" في نصوص Avada البرمجية
بعض الإضافات تعمل defer عبر فلتر ووردبريس script_loader_tag. A مرشحات هي دالة تستقبل قيمة ويجب أن تُرجعها (على عكس عمل (الذي ينفذ التعليمات البرمجية دون إرجاع قيمة).
أين يتم لصق الكود من الأفضل أن يكون ذلك في مو البرنامج المساعد (يجب استخدام هذا الملحق) بحيث يظل نشطًا حتى إذا قمت بتغيير القوالب.
طريق : /wp-content/mu-plugins/avada-assets-fix.php (إنشاء المجلد) mu-plugins (إن لم يكن موجوداً).
احفظ التغييرات قبل إجرائها. يؤدي غياب القوس إلى ظهور خطأ 500.
قبل (مثال على الكود "المعطل" الذي يُضاف غالبًا إلى ملف functions.php):
<?php
/**
* Exemple de snippet problématique : ajoute defer à (presque) tous les scripts.
* Je l'ai vu copié depuis des tutoriels anciens.
*/
add_filter( 'script_loader_tag', function( $tag, $handle ) {
// ERREUR : on defer aussi les scripts qui doivent s'exécuter immédiatement (Avada, jQuery, etc.)
return str_replace( ' src', ' defer src', $tag );
}, 10, 2 );
بعد (باستثناء Avada + jQuery + بعض المقابض الشائعة):
<?php
/**
* Plugin MU : exclusions defer/delay pour Avada (WordPress 6.9.4+, PHP 8.1+).
* Fichier : wp-content/mu-plugins/avada-assets-fix.php
*/
defined( 'ABSPATH' ) || exit;
/**
* Retire "defer" (ou empêche son ajout) sur des scripts critiques.
*
* Pourquoi :
* - Avada Builder et certains modules attendent un ordre précis (dépendances JS).
* - Si un script est defer alors que son dépendant ne l'est pas, on obtient des erreurs JS.
*/
add_filter( 'script_loader_tag', function( $tag, $handle ) {
// Liste à adapter : utilisez Query Monitor > Scripts pour voir les handles réels.
$critical_handles = array(
'jquery',
'jquery-core',
'jquery-migrate',
// Avada / Fusion (handles fréquents, selon versions)
'fusion-builder-app',
'fusion-scripts',
'avada-scripts',
);
if ( in_array( $handle, $critical_handles, true ) ) {
// On retire defer si un autre plugin l'a injecté.
$tag = preg_replace( '/sdefer(=(['"]).*?2)?/i', '', $tag );
$tag = preg_replace( '/sdata-no-defer(=(['"]).*?2)?/i', '', $tag );
return $tag;
}
return $tag;
}, 100, 2 );
لماذا يتم تصحيحه؟
يعتمد Avada على تبعيات JavaScript وتوقيت التنفيذ. عندما يقوم أحد المكونات الإضافية بتحسين الأداء بشكل مفرط، ينتهي بك الأمر إلى:
- نص برمجي Avada يتم تنفيذه قبل jQuery
- أو الوحدات التي تم تهيئتها قبل أن يكون نموذج كائن المستند (DOM) جاهزًا،
- أو الأحداث غير المرفقة (الأزرار غير النشطة في أداة الإنشاء).
من خلال استبعاد المقابض الحرجة، فإنك تسمح لملحق التحسين بالعمل على الباقي، دون تعطيل Avada.
سيتم التحقق من ذلك (تشخيص دقيق)
- وحدة تحكم المتصفح: الخطأ
jQuery is not definedيجب أن يختفي. - علامة تبويب الشبكة: يجب أن تستجيب البرامج النصية Avada برمز 200 (وليس 404/403).
- مراقبة الاستعلامات > البرامج النصية: تحقق من ترتيب الملفات ووجودها.
الحل الثاني: أقسام "العرض الكامل" المعطلة (الحاوية، القالب الفرعي، CSS العام)
الأعراض النموذجية: حاويات بعرض كامل لم تعد بعرض كامل، أعمدة تتجاوز الحد المسموح به، تمرير أفقي، أقسام "تلتصق" بالحافة، أو على العكس من ذلك، كل شيء محاط بعرض ثابت.
المحفز الكلاسيكي: إضافة CSS عام إلى:
- أفادا > خيارات > CSS مخصص،
- المظهر > تخصيص > CSS إضافي،
- القالب الفرعي (style.css)،
- إضافة لقصاصات CSS،
- أو إضافة خارجية لإنشاء الصفحات.
مأزق شائع: التحميل الزائد لـ .container/.row
قبل (ملف CSS "المعطل" الذي أراه بانتظام):
/* Exemple problématique : trop générique */
.container {
width: 100%;
max-width: 100%;
}
.row {
margin-left: 0;
margin-right: 0;
}
لماذا هو خطير: يستخدم Avada أغلفة خاصة به وشبكة. إذا قمت بفرض .container ou .rowأنت بذلك تُخالف حسابات الهوامش/الحشو والتصميم المتجاوب.
التشخيص: إيجاد حل CSS الأمثل
- افتح الصفحة المعطوبة.
- انقر بزر الماوس الأيمن > فحص (Chrome/Firefox).
- حدد عنصرًا يفيض (غالبًا ما يكون حاوية).
- انظر إلى علامة التبويب "الأنماط": ستجد القاعدة الدقيقة و الملف من يقوم بتطبيقه.
إذا كانت القاعدة تأتي من قالبك الفرعي أو من CSS إضافي، فقم بتصحيحها عن طريق تقييدها بالسياق الصحيح.
التصحيح: حدد نطاق ملف CSS الخاص بك بدلاً من تعديل الفئات العامة
بعد (CSS المصحح والمستهدف):
/* Exemple corrigé : on cible uniquement une zone spécifique */
.page-id-123 .banniere-custom .container {
max-width: 1200px;
margin-left: auto;
margin-right: auto;
}
/* Et si vous voulez du full width, ciblez votre wrapper, pas .container global */
.page-id-123 .banniere-custom {
width: 100%;
max-width: 100%;
}
أين يتم لصق هذا الكود البرمجي (CSS):
- الأنظف: موضوع الطفل >
style.css. - حسنًا، لنبدأ: كس إضافية (تخصيص).
- تجنب تكرار المواقع (وإلا فلن تعرف من أين تأتي القاعدة).
حالة شائعة في Avada: overflow-x hidden "لإخفاء" تجاوز السعة
كثيراً ما رأيت المستخدمين يضيفون هذا الخيار لإزالة التمرير الأفقي:
html, body { overflow-x: hidden; }
هذا يُخفي العرض لا السبب. عندما يحتاج عنصر ما إلى تجاوز حدوده (مثل شريط التمرير أو الرسوم المتحركة)، يتم اقتطاعه. بدلاً من ذلك، ابحث عن العنصر المُسبب للمشكلة (باستخدام أدوات المطورين) وقم بتصحيح عرضه/هامشه.
خيار متقدم (مع الكود): تحميل CSS التصحيحي فقط على صفحات معينة
إذا كنت لا ترغب في تعديل ملف CSS العام، فقم بتحميل ملف التصحيح صفحة تلو الأخرى عبر خطاف. صنارة صيد الخطاف في ووردبريس هو إجراء أو فلتر. هنا، نستخدم الإجراء wp_enqueue_scripts.
أين يتم لصق الكود : functions.php du موضوع الطفل (أو إضافة مخصصة).
احفظ الملف قبل التعديل قد يؤدي نسيان فاصلة إلى تعطيل الموقع.
قبل (ممارسة سيئة: استخدام CSS مضمن ضخم في جميع أنحاء الموقع):
<?php
add_action( 'wp_head', function() {
// ERREUR : CSS injecté partout, difficile à maintenir, impact perf
echo '<style>.container{max-width:100%!important;}</style>';
} );
بعد (تنظيف قائمة الانتظار + الاستهداف):
<?php
/**
* Thème enfant : charge un CSS correctif seulement sur une page.
* Fichier : wp-content/themes/Avada-child/functions.php
*/
add_action( 'wp_enqueue_scripts', function() {
// Exemple : ne charger que sur la page ID 123.
if ( ! is_page( 123 ) ) {
return;
}
wp_enqueue_style(
'avada-child-layout-fix',
get_stylesheet_directory_uri() . '/assets/css/layout-fix.css',
array(), // Dépendances (si besoin, ajoutez le handle du style Avada)
'2026-04-05'
);
}, 20 );
لماذا هو أفضل: يدير ووردبريس التحميل والتخزين المؤقت للمتصفح، وتتجنب تلويث جميع الصفحات.
الحل الثالث: عدم عرض رموز Fusion المختصرة وتعطل أداة إنشاء جافا سكريبت (الخطافات، REST/AJAX، الأمان)
الأعراض النموذجية:
- يمكنك رؤية رموز Avada المختصرة كنص عادي (على سبيل المثال:
[fusion_text]). - يتم تحميل برنامج البناء جزئيًا، ثم يتجمد.
- فشل الاتصال بالشبكة (403/401) على
/wp-json/ouadmin-ajax.php.
السبب الشائع: تعطيل Avada Builder/Core، أو وجود إصدارات غير متوافقة
يعتمد برنامج Avada على إضافات مصاحبة. تحقق من ذلك في قسم الإضافات:
- كود أفادا : نشيط
- أفادا بيلدر : نشيط
إذا كان أحد الرموز غير نشط، فلن يتم حفظ بعض الرموز المختصرة، لذا يعرضها ووردبريس كنص.
أحد الأسباب الشائعة: وجود مرشح "ينظف" المحتوى ويعطل الرموز المختصرة.
كثيراً ما صادفت هذه المقتطفة (مأخوذة من مصادر قديمة) مقالات) الذي يزيل الرموز المختصرة من المحتوى:
قبل (مكسور):
<?php
/**
* Exemple problématique : supprime les shortcodes du contenu.
* Résultat : Avada ne peut plus rendre ses éléments.
*/
add_filter( 'the_content', function( $content ) {
// ERREUR : retire tout ce qui ressemble à un shortcode
$content = preg_replace( '/[[^]]+]/', '', $content );
return $content;
}, 5 );
بعد ذلك (نتجنب لمس المحتوى، أو نقتصره على حالة محددة):
<?php
/**
* Correction : ne supprimez pas les shortcodes globalement.
* Si vous devez nettoyer un contenu, faites-le sur un champ spécifique,
* ou sur un type de contenu précis, et jamais via une regex globale.
*/
add_filter( 'the_content', function( $content ) {
// Exemple : ne rien faire sur les pages Avada (le plus sûr pour débuter).
if ( is_singular() ) {
return $content;
}
return $content;
}, 5 );
لماذا يحل هذا المشكلة: يستخدم Avada رموزًا مختصرة (أو كتلًا/هياكل داخلية حسب التكوين). إزالتها على مستوى the_content ويعني ذلك إزالة "وصفة" التخطيط.
السبب الشائع: تم حظر واجهة برمجة تطبيقات REST (لأسباب أمنية) ووجود أداة بناء تعتمد على استدعاءات واجهة برمجة التطبيقات.
تقوم بعض إضافات أو مقتطفات الأمان بحظر واجهة برمجة تطبيقات REST. ومع ذلك، يعتمد محرر ووردبريس الحديث والعديد من أدوات الإنشاء على /wp-json/ (على الرغم من أن برنامج أفادا لديه آلياته الخاصة).
قبل (مقتطف خطير، عدواني للغاية):
<?php
/**
* Exemple courant : bloque TOUTE la REST API.
* Effets : éditeurs et builders cassés, intégrations KO.
*/
add_filter( 'rest_authentication_errors', function( $result ) {
if ( ! is_user_logged_in() ) {
return new WP_Error( 'rest_forbidden', 'REST API désactivée.', array( 'status' => 403 ) );
}
return $result;
} );
بعد ذلك (نحد من الانسداد، ونترك على الأقل الطرق الضرورية مفتوحة):
<?php
/**
* Version plus prudente : ne bloquez pas la REST API globalement.
* Si vous devez restreindre, faites-le par route et avec une logique claire.
*
* OÙ : plugin custom ou mu-plugin (évitez functions.php si vous testez souvent).
*
* Risque sécurité : mal configurer ce filtre peut exposer des données.
* Testez en staging.
*/
add_filter( 'rest_authentication_errors', function( $result ) {
// Si une autre auth a déjà échoué, on respecte.
if ( is_wp_error( $result ) ) {
return $result;
}
$request_uri = isset( $_SERVER['REQUEST_URI'] ) ? (string) $_SERVER['REQUEST_URI'] : '';
// Exemple : autoriser tout /wp/v2/ et laisser WordPress gérer les permissions.
// Adaptez à votre politique réelle.
if ( str_contains( $request_uri, '/wp-json/wp/v2/' ) ) {
return $result;
}
// Bloquer uniquement certaines routes custom (exemple).
if ( str_contains( $request_uri, '/wp-json/mon-plugin-prive/' ) && ! is_user_logged_in() ) {
return new WP_Error(
'rest_forbidden',
'Accès REST restreint.',
array( 'status' => 403 )
);
}
return $result;
} );
المرجع الرسمي لواجهة برمجة تطبيقات REST: developer.wordpress.org/rest-api.
السبب الشائع: حظر طلبات AJAX الخاصة بالمسؤول (nonce/permissions) أو جدار حماية تطبيقات الويب (WAF)
إذا قام المقاول بإجراء مكالمات إلى admin-ajax.php وإذا رأيت الرمز 403/401، فتحقق مما يلي:
- مكون إضافي أمني/جدار حماية تطبيقات الويب (Wordfence، Cloudflare WAF، ModSecurity) يقوم بحظر الطلب.
- ذاكرة تخزين مؤقتة تقوم بتخزين استجابة AJAX (تكوين سيئ).
- انتهت صلاحية المبعوث البابوي: واحد السفير البابوي هو رمز مضاد لهجمات تزوير الطلبات عبر المواقع (CSRF). إذا كان غير صالح، سيرفض ووردبريس العملية.
مرجع عن المندوب البابوي: الأرقام العشوائية (أمان ووردبريس).
عمليات التحقق بعد التصحيح
بعد كل حل، قم بإجراء الاختبارات بهذا الترتيب (وإلا فقد "تؤكد" نتيجة إيجابية خاطئة بسبب ذاكرة التخزين المؤقت):
- المنظف : ذاكرة التخزين المؤقت Avada، ذاكرة التخزين المؤقت للبرنامج المساعد، ذاكرة التخزين المؤقت للخادم، ذاكرة التخزين المؤقت CDN.
- ملاح : إعادة تحميل إجبارية (Ctrl+F5) + اختبار في وضع التصفح الخاص.
- كنسولات : لا مزيد من الأخطاء الحمراء المتعلقة بـ Avada/jQuery.
- الهاتف : اختبار الاستجابة (أداة المطورين) + هاتف حقيقي إن أمكن.
- متصل/غير متصل : افتح نافذة خاصة لمحاكاة زائر.
إذا كنت تستخدم Fusion Builder/Fusion Slider: اختبر صفحة "بسيطة" (حاوية واحدة، عمودان، زر واحد). يتيح لك هذا معرفة ما إذا كانت الشبكة قد عادت بسرعة.
إذا لم ينجح ذلك أيضاً
عندما أواجه مقاومة، أتبع دائماً نهجاً منهجياً، وإلا فإننا ندور في حلقة مفرغة.
1) التحقق من وجود أخطاء (السجلات + مراقب الاستعلامات)
- فتح
wp-content/debug.log(إذا تم تمكين WP_DEBUG_LOG). - قم بتثبيت برنامج مراقبة الاستعلامات وشاهد:
- أخطاء PHP
- تم تحميل البرامج النصية/الأنماط
- طلبات HTTP
2) فحص السلامة: عزل القوالب/الإضافات دون التأثير على الموقع العام
- قم بتفعيل وضع استكشاف الأخطاء وإصلاحها.
- اترك Avada + Avada Core + Avada Builder.
- قم بتعطيل كل شيء آخر.
- أعد تنشيطها واحدة تلو الأخرى حتى تتمكن من إعادة إنتاج الخلل.
عندما تجد المكون الإضافي المعيب: ابحث عن خيار "الاستبعاد" (استبعاد نصوص Avada من التأخير/الدمج) قبل حذفه.
3) التحقق من وجود أخطاء 404/403 على الأصول (الشبكة)
في أدوات المطورين > الشبكة:
- قم بالتصفية حسب "CSS" ثم "JS".
- حدد حالات الخطأ 404/403.
- افتح عنوان URL في علامة تبويب جديدة: إذا أعاد خطأ 404، فهذه ليست مشكلة في المتصفح، بل مشكلة في الخادم/إعادة الكتابة/الأذونات/شبكة توصيل المحتوى (CDN).
4) الروابط الدائمة / إعادة الكتابة
نصيحة مفيدة: انتقل إلى الإعدادات > الروابط الدائمة وانقر على "حفظ" (دون تغيير أي شيء). سيؤدي هذا إلى إعادة إنشاء قواعد إعادة الكتابة.
إشارة: flush_rewrite_rules() (لا تستخدم هذا المصطلح في كل صفحة، فقط في بعض الأحيان).
5) تحقق من ذاكرة PHP
قد يكون برنامج Avada كثيف الاستخدام للموارد، خاصةً مع وجود العديد من الوحدات والخيارات. وقد يؤدي نقص الذاكرة إلى سلوك غير طبيعي (وليس بالضرورة خطأً واضحاً).
إشارة: زيادة الذاكرة المخصصة لـ PHP.
6) الخطوة الأخيرة: تعطيل جميع ذاكرات التخزين المؤقت على جانب الخادم مؤقتًا
- ذاكرة التخزين المؤقت لـ Nginx/FastCGI
- ورنيش
- شبكة توصيل المحتوى (وضع التطوير)
لقد رأيتُ شبكة توصيل محتوى (CDN) تُقدّم ملف CSS خاصًا بـ Avada عمره عدة أيام رغم نجاح عملية حذفه من جانب الإضافة. للتأكد، يجب تجاوز شبكة توصيل المحتوى (عبر ملف hosts أو عنوان URL الأصلي المباشر إن أمكن).
الأخطاء الشائعة والمزالق
| عرض | السبب المحتمل | يوصى بالحل |
|---|---|---|
| خطأ 500 بعد إضافة جزء من التعليمات البرمجية | تم لصق الكود في المكان الخطأ، والفاصلة المنقوطة مفقودة. | قم بإزالة المقتطف عبر بروتوكول نقل الملفات (FTP)، واستخدم إضافة mu، وتحقق من صحة بناء الجملة. |
| توقف المُنشئ، وحدة التحكم: لم يتم تعريف jQuery | إضافة Perf تختلف عن jQuery | الحل الأول (استبعاد المقابض الحرجة، تعطيل التأخير/التأجيل لـ Avada) |
| أعمدة متراصة في كل مكان | CSS العالمي على .container/.row | الحل الثاني (تحديد نطاق CSS، وإزالة القواعد العامة) |
| كل شيء يعمل عند الاتصال، ولكنه يتعطل عند فصله. | يختلف تأخير ذاكرة التخزين المؤقت للصفحة + تأخير جافا سكريبت بالنسبة للزوار | تعطيل ذاكرة التخزين المؤقت للصفحات في أداة إنشاء الصفحات، ومسحها، والاستثناءات |
| الرموز المختصرة المعروضة | Avada Builder/Core غير نشط أو أن فلتر المحتوى مُدمر | تفعيل إضافات Avada، وإزالة التعبير النمطي "التنظيف"، الحل 3 |
| تم تطبيق الإصلاح ولكن لم يتغير شيء. | لم يتم مسح ذاكرة التخزين المؤقت للمتصفح/شبكة توصيل المحتوى | التصفح الخاص + تنظيف شبكة توصيل المحتوى + التحكم في إصدارات CSS (سلسلة الاستعلام) |
| لا يعمل المقتطف البرمجي "defer". | خطاف خاطئ، أولوية خاطئة | استخدم script_loader_tag بأولوية عالية (100)، وتحقق من المقابض. |
| CSS/JS 404 | تم حذف أذونات الملفات ومجلد التحميلات/ذاكرة التخزين المؤقت. | إصلاح الأذونات، وإعادة إنشاء الأصول، والتحقق من قواعد أمان الخادم |
الأخطاء التي أراها غالباً بين المبتدئين (والتي تستنزف الوقت):
- انسخ الكود إلى القالب الرئيسي بدلاً من موضوع الأطفال.
- اختبر مباشرة على بيئة الإنتاج دون الحاجة إلى الحفظ أو التجهيز.
- نسيان مسح ذاكرة التخزين المؤقت للملحق وشبكة توصيل المحتوى (واعتقاد أن "الأمر لا يعمل").
- استخدام برنامج تعليمي للتحسين عمره 5 سنوات يقوم "بتأجيل كل شيء" (غير متوافق مع برامج البناء الحديثة).
- الخلط بين الإجراء والمرشح: يجب أن يكون المرشح عودة القيمة.
بديل / متغير
طريقة بدون كتابة كود: الاستثناءات في إضافة التحسين الخاصة بك
تتيح لك معظم إضافات تحسين الأداء استبعاد ما يلي:
- البرامج النصية عن طريق عنوان URL أو عن طريق الكلمة الرئيسية (
fusion,avada), - الصفحات (المحرر، منشئ الصفحات)،
- أو لتعطيل "تأخير جافا سكريبت" فقط في صفحات معينة.
إذا كنت مبتدئًا، فهذا غالبًا ما يكون الحل الوسط الأفضل: مخاطرة أقل من استخدام مقتطف PHP سيئ اللصق.
طريقة أكثر تطوراً: تحديد خصائص الأصول بدقة
للحصول على الملفات التعريفية التقنية، يمكنك:
- استخدم أداة مراقبة الاستعلامات لعرض قائمة بالبرامج النصية/الأنماط وتوابعها.
- قارن بين عرض HTML (عرض المصدر) في الوضع العادي ووضع استكشاف الأخطاء وإصلاحها.
- إذا كان لديك WP-CLI، فتحقق من التكوين وقم بإجراء عمليات تنظيف مستهدفة (حسب مجموعة البرامج الخاصة بك).
مرجع WP-CLI (رسمي): أوامر WP-CLI.
تجنب هذه المشكلة في المستقبل
- قم بتنفيذ التحديثات بالترتيب. ووردبريس 6.9.4+ ← Avada (القالب) ← Avada Core/Builder ← الإضافات. ثم قم بمسح ذاكرة التخزين المؤقت بالكامل.
- تجنب استخدام مقتطفات "التحسين السحري". المتقدمين
defer/asyncفي كل مكان. يحتاج البناؤون العصريون إلى نظام مستقر. - قم بتوحيد ملفات CSS الخاصة بك : موقع واحد (موضوع للأطفال) بدلاً من 4 مواقع. ستجد قواعدك هناك.
- حدد نطاق CSS الخاص بك يفضل
.page-id-123 .mon-blocبدلا من.containerالعالمية. - حافظ على المسرح حتى النسخة التجريبية "الرخيصة" ستمنعك من تعطيل موقعك الإلكتروني العام.
- راقب وحدة التحكم بعد كل إضافة للمكون الإضافي: يمكن لخطأ واحد في جافا سكريبت أن يعطل واجهة المستخدم بأكملها.
إذا كنت بحاجة إلى إضافة جزء برمجي، فاستخدم إضافة mu-plugin وقم بحفظ التغييرات في إصدارها. هذا يُسهّل تعطيلها في حالات الطوارئ عبر بروتوكول نقل الملفات (FTP).
الموارد
- تصحيح الأخطاء في ووردبريس (WP_DEBUG)
- wp_enqueue_script() (تحميل جافا سكريبت)
- فلتر script_loader_tag
- دليل واجهة برمجة تطبيقات REST
- الأرقام العشوائية (أمان ووردبريس)
- مراقبة الاستعلامات (إضافة)
- فحص الحالة الصحية واستكشاف الأخطاء وإصلاحها (إضافة)
- إصدارات PHP المدعومة
- كود ووردبريس الأساسي على جيت هاب (مرجع الكود)
أسئلة fréquentes
هل يجب عليّ تعطيل أداة Avada Builder إذا لم أعد أقوم بتحرير صفحاتي؟
لا، ليس إذا كانت صفحاتك الحالية تعتمد عليه. إذا تم إنشاء المحتوى باستخدام عناصر Avada، فقد يؤدي تعطيل Avada Builder/Core إلى عرض الرموز المختصرة كنص عادي أو تعطيل عملية العرض.
لماذا تظهر المشكلة فقط على الهواتف المحمولة؟
غالباً ما يكون السبب هو أن تحسين CSS العام أو "CSS الحرج" لا يغطي نقاط التوقف، أو بسبب تأخير تشغيل سكربت الاستجابة. اختبر ذلك بتعطيل "إزالة CSS غير المستخدم" و"تأخير جافا سكريبت" مؤقتاً.
لقد قمت بتصحيح CSS، لكنني لا أرى أي تغيير.
يتم تخزينها مؤقتًا في أغلب الأحيان. امسح ذاكرة التخزين المؤقت للملحق وذاكرة التخزين المؤقت لشبكة توصيل المحتوى (CDN)، ثم اختبرها في وضع التصفح الخاص. إذا كنت تقوم بتحميل ملف CSS، فغيّر رقم إصداره (مثل 2026-04-05) لإجبار المتصفح.
أين أفضل مكان للصق جزء من كود PHP؟
لحل مشاكل برنامج Avada، أفضل استخدام مو البرنامج المساعد (في /wp-content/mu-plugins/): يبقى نشطًا ويمكنك إزالته بسرعة عبر بروتوكول نقل الملفات (FTP) إذا ارتكبت خطأً.
ما الفرق بين الإجراء والمرشح؟
- عمل ينفذ التعليمات البرمجية في وقت محدد (على سبيل المثال، wp_enqueue_scripts). A مرشحات يستقبل قيمة ويجب عودة معدلة أو غير معدلة (على سبيل المثال: script_loader_tag).
هل يمكن أن تتسبب إضافة التخزين المؤقت في تعطيل Avada؟
نعم، خاصةً إذا كان يجمع/يؤجل تحميل جافا سكريبت أو يخزن صفحات لا ينبغي تخزينها مؤقتًا (صفحات التحرير، والصفحات ذات المحتوى الديناميكي). عادةً ما تحل الاستثناءات على مستوى الصفحة أو على مستوى البرنامج النصي المشكلة.
لماذا تظهر لي شاشة بيضاء في برنامج الإنشاء ولكن ليس في الموقع العام؟
لأن لوحة التحكم تُحمّل نصوصًا برمجية مختلفة. قد يؤدي خطأ في جافا سكريبت في واجهة لوحة التحكم (أو قيود REST/AJAX) إلى تعطيل أداة الإنشاء دون التأثير على واجهة المستخدم.
هل يكفي إجراء "إعادة ضبط CSS" بسيطة لتعطيل التصميم؟
نعم. عمليات إعادة ضبط مفرطة العدوانية img, iframe, .container, .row أو القواعد العالمية بشأن box-sizing بإمكانهم تجاوز حدود النظام. حدد نطاق قواعدك بما يتناسب مع منطقتك.
أواجه أخطاء 404 في ملفات CSS المُنشأة: ماذا أفعل؟
ابدأ بتنظيف وإعادة إنشاء ذاكرة التخزين المؤقت (لبرنامج Avada والمكونات الإضافية). ثم تحقق من الأذونات/الصلاحيات على wp-content/uploadsإذا كانت شبكة توصيل المحتوى (CDN) نشطة، فقم بتنظيف جانب شبكة توصيل المحتوى أيضًا.