ربط WordPress LMS بـ xAPI و NELC — الدليل الشامل
ربط WordPress LMS بـ xAPI و NELC — الدليل الشامل
المؤلف: فريق Bzzix التقني
آخر تحديث: 2026
المستوى: متوسط
المتطلبات: WordPress 5.8+، صلاحية Admin
الوقت المقدر للقراءة: 25 دقيقة
مقدمة
WordPress هو النظام الأكثر مرونة وانتشاراً لبناء مواقع التعليم الإلكتروني، خاصةً مع إضافات LMS مثل LearnDash وLifterLMS وTutor LMS. لكن WordPress بحد ذاته لا يدعم xAPI — يأتي هذا الدعم من خلال إضافات متخصصة.
هذا الدليل يشرح كيفية تحقيق التوافق الكامل مع معيار xAPI ومتطلبات NELC على منصة WordPress.
1. الإضافات المدعومة لـ xAPI على WordPress
1.1 خيارات الإضافات المتاحة
| الإضافة | LMS المتوافق | مجانية؟ | مستوى الدعم |
|---|---|---|---|
| GrassBlade xAPI Companion | LearnDash, LifterLMS, Tutor | مدفوعة | ✅ ممتاز |
| LearnDash xAPI Plugin | LearnDash فقط | مدفوعة | ✅ جيد |
| WP Courseware xAPI | WP Courseware | مدفوعة | ⚠️ محدود |
| بناء مخصص (Custom) | أي LMS | حسب المشروع | ✅ الأفضل |
1.2 الملحقات الرسمية المعتمدة من المركز الوطني (NELC Open Source Plugins)
يوفر المركز الوطني للتعليم الإلكتروني (NELC) إضافات مفتوحة المصدر مجانية لربط أشهر أنظمة إدارة التعلم (LMS) في ووردبريس (مثل LearnDash و Tutor LMS) مباشرة مع LRS الخاص بالمركز:
- إضافة Tutor LMS لربط LRS: tutor-lms-lrs-plugin
- إضافة LearnDash لربط LRS: learndash-lrs-plugin
تسهل هذه الإضافات إرسال إفادات xAPI المتوافقة مع اشتراطات المركز بشكل تلقائي ودون الحاجة للاستعانة بإضافات تجارية خارجية.
2. GrassBlade xAPI Companion — الإعداد الكامل
2.1 ما هي GrassBlade؟
GrassBlade xAPI Companion هي الإضافة الأشهر والأكثر شمولاً لدعم xAPI على WordPress. تتميز بـ:
- دعم أي محتوى xAPI/Tin Can
- LRS مدمج (GrassBlade LRS)
- توافق مع LearnDash وLifterLMS وأكثر
- دعم SCORM داخل WordPress
2.2 تثبيت GrassBlade
الطريقة الأولى: من WordPress.org
WordPress Dashboard
→ Plugins
→ Add New
→ Search "GrassBlade"
→ Install → Activate
الطريقة الثانية: رفع مباشر
- حمّل ملف ZIP من grassblade.com
- انتقل إلى: Plugins → Add New → Upload Plugin
- ارفع الملف وانقر "Install Now"
- فعّل الإضافة
2.3 إعداد الاتصال بـ LRS الخارجي (NELC)
بعد التفعيل، انتقل إلى:
WordPress Dashboard
→ GrassBlade
→ Settings
→ LRS Settings
أدخل بيانات NELC:
| الحقل | القيمة |
|---|---|
| LRS Type | External LRS |
| Endpoint | https://lrs.nelc.gov.sa/xapi/ |
| Key (Username) | مفتاح الحساب من NELC |
| Secret (Password) | كلمة السر من NELC |
| xAPI Version | 1.0.3 |
2.4 اختبار الاتصال
بعد الإعداد، انقر "Test Connection":
- ✅ نجاح: "Successfully connected to LRS"
- ❌ فشل: "Connection failed" — راجع بيانات الاعتماد
3. LearnDash xAPI Plugin — الإعداد الكامل
3.1 ما يفعله Plugin
يحوّل أحداث LearnDash إلى جمل xAPI ويرسلها إلى LRS:
| حدث LearnDash | فعل xAPI |
|---|---|
| إكمال الدورة | completed |
| اجتياز اختبار | passed |
| رسوب في اختبار | failed |
| إكمال الدرس | completed |
| بدء الدورة | launched |
| الإجابة على سؤال | answered |
3.2 تثبيت LearnDash xAPI
LearnDash Dashboard
→ LearnDash LMS
→ Add-Ons
→ xAPI Integration
→ Download & Install
3.3 إعداد LRS في LearnDash
LearnDash LMS
→ Settings
→ xAPI
→ Enable xAPI [✓]
→ LRS Endpoint: https://lrs.nelc.gov.sa/xapi/
→ Username: [من NELC]
→ Password: [من NELC]
4. إعداد Actor Identification في WordPress
4.1 طريقة التعريف الافتراضية
GrassBlade تستخدم البريد الإلكتروني للمستخدم تلقائياً:
{
"actor": {
"objectType": "Agent",
"name": "أحمد المحمدي",
"mbox": "mailto:ahmed@example.sa"
}
}
4.2 استخدام Account بدلاً من mbox
// في functions.php أو Custom Plugin
add_filter('grassblade_actor', function($actor, $user) {
return [
'objectType' => 'Agent',
'name' => $user->display_name,
'account' => [
'homePage' => home_url(),
'name' => (string) $user->ID
]
];
}, 10, 2);
5. اختبار xAPI من WordPress
5.1 أداة اختبار مدمجة في GrassBlade
GrassBlade
→ Tools
→ Send Test Statement
→ Click "Send"
5.2 اختبار يدوي عبر cURL
curl -X POST https://lrs.nelc.gov.sa/xapi/statements \
-H "Authorization: Basic $(echo -n 'username:password' | base64)" \
-H "Content-Type: application/json" \
-H "X-Experience-API-Version: 1.0.3" \
-d '{
"actor": {
"name": "WordPress Test User",
"mbox": "mailto:test@bzzix.com"
},
"verb": {
"id": "http://adlnet.gov/expapi/verbs/launched",
"display": { "ar": "بدأ" }
},
"object": {
"id": "https://your-wordpress.com/test",
"definition": {
"name": { "ar": "اختبار WordPress xAPI" }
}
}
}'
الاستجابة المتوقعة:
["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"]
6. استكشاف الأخطاء وإصلاحها
خطأ 401: Unauthorized
السبب: بيانات الاعتماد خاطئة
الحل:
1. تحقق من Username وPassword في إعدادات LRS
2. تأكد من صحة الـ Endpoint URL
3. جرّب الاتصال مباشرةً من Postman
الـ Statements لا تُرسل
الأسباب المحتملة:
- WordPress Cron معطّل
- GrassBlade غير مفعّلة
- المستخدم غير مسجّل Enrollment
الحل:
// في wp-config.php، تأكد من:
define('DISABLE_WP_CRON', false);
// أو أضف Cron حقيقي في cPanel/Server:
*/5 * * * * wget -q -O /dev/null https://your-site.com/wp-cron.php
خطأ SSL/HTTPS
Error: SSL certificate verify failed
الحل:
// مؤقتاً في التطوير فقط:
add_filter('https_ssl_verify', '__return_false');
// ⚠️ لا تستخدم في الإنتاج!
Statement تصل ناقصة
الحل: تحقق من إعدادات Actor في GrassBlade:
GrassBlade → Settings → Actor Settings → Check "Include Email"
7. قائمة امتثال NELC لـ WordPress
التحقق الكامل قبل الإطلاق
إعدادات الإضافة:
- GrassBlade أو LearnDash xAPI مثبّتة ومفعّلة
- LRS Endpoint يشير إلى NELC
- بيانات الاعتماد صحيحة
- اختبار الاتصال ناجح
بيانات المتعلم:
- Actor يحتوي على mbox أو account صالح
- اسم المتعلم يُرسل مع كل Statement
- كل مستخدم WordPress له بريد إلكتروني فريد
الأفعال والأنشطة:
- الأفعال تستخدم URIs معتمدة من ADL
- Object ID هو URL كامل وفريد لكل نشاط
- الدورات والدروس والاختبارات لها IDs مميزة
الأداء:
- Batch sending مفعّل
- Retry logic مُعدَّ
- WordPress Cron يعمل بشكل منتظم
- Logs مراقبة بانتظام
الامتثال:
- تم إرسال Statement تجريبي بنجاح
- NELC استقبل وأكّد الـ Statements
- التوثيق التقني جاهز للمراجعة
8. تكامل WooCommerce مع xAPI
إذا كنت تبيع الدورات عبر WooCommerce، يمكن تتبع عمليات الشراء:
8.1 إرسال Statement عند الشراء
// في functions.php
add_action('woocommerce_order_status_completed', function($order_id) {
$order = wc_get_order($order_id);
$user = get_user_by('id', $order->get_user_id());
foreach ($order->get_items() as $item) {
$product = $item->get_product();
$statement = [
'actor' => [
'name' => $user->display_name,
'mbox' => 'mailto:' . $user->user_email
],
'verb' => [
'id' => 'http://activitystrea.ms/schema/1.0/purchase',
'display' => ['ar' => 'اشترى', 'en-US' => 'purchased']
],
'object' => [
'id' => get_permalink($product->get_id()),
'definition' => [
'name' => [
'ar' => $product->get_name(),
'en-US' => $product->get_name()
],
'type' => 'http://adlnet.gov/expapi/activities/course'
]
],
'result' => [
'extensions' => [
'https://bzzix.com/xapi/extensions/order-id' => $order_id,
'https://bzzix.com/xapi/extensions/price' => $order->get_total(),
'https://bzzix.com/xapi/extensions/currency' => 'SAR'
]
]
];
// إرسال إلى LRS
bzzix_send_xapi_statement($statement);
}
});
8.2 تتبع دورة حياة المتعلم الكاملة
[اشترى الدورة] → [سجّل الدخول] → [بدأ الدرس] → [أجاب على اختبار] → [أكمل الدورة]
↓ ↓ ↓ ↓ ↓
purchased logged-in launched answered completed
↓ ↓ ↓ ↓ ↓
[كل هذا في LRS NELC]
9. تحسين الأداء
9.1 Async Sending
لتجنب إبطاء WordPress، أرسل الـ Statements بشكل غير متزامن:
// استخدم Action Scheduler من WooCommerce
as_enqueue_async_action('bzzix_send_xapi', ['statement' => $statement]);
9.2 Queue Management
// احتفظ بـ Queue محلية للـ Statements الفاشلة
function bzzix_queue_statement($statement) {
$queue = get_option('bzzix_xapi_queue', []);
$queue[] = [
'statement' => $statement,
'attempts' => 0,
'created' => time()
];
update_option('bzzix_xapi_queue', $queue);
}
10. [PREMIUM] — طلب خدمة الإعداد الكامل
🔒 خدمة PREMIUM من Bzzix
هل تريد فريق Bzzix يتولى إعداد WordPress مع xAPI وNELC بشكل كامل؟
ما يشمله الإعداد:
- ✅ تثبيت وتكوين GrassBlade/LearnDash xAPI
- ✅ الربط الكامل بـ NELC LRS
- ✅ تطوير Integration مخصصة إذا لزم
- ✅ ربط WooCommerce مع xAPI
- ✅ اختبار شامل للامتثال مع NELC
- ✅ تدريب الفريق التقني
- ✅ دعم فني لمدة 30 يوماً
زمن التسليم: 2-5 أيام عمل
📧 تواصل معنا: bzzix.com/contact
📞 أو اتصل: +966-XX-XXXXXXX
11. مصادر مفيدة
الخطوة التالية
لمعرفة كيفية تكامل xAPI في مشاريع Laravel المخصصة، انتقل إلى:
05_laravel_xapi.md
© 2026 Bzzix — جميع الحقوق محفوظة. هذه الوثيقة جزء من مجموعة وثائق xAPI الرسمية لمنصة Bzzix.