مزامنة حالة عدم اكتمال الدروس في جميع الدورات التعليمية
تعد منصة LearnDash واحدة من أكثر أنظمة إدارة التعلم شعبية في الوقت الحالي، حيث تسمح للمدربين والمستخدمين بتنظيم المحتوى التعليمي بشكل فعال. واحدة من الميزات التي يسعى الكثيرون لتطبيقها هي التزامن بين حالات إكمال الدروس، خاصة عند التعامل مع الدروس التي لم يكتمل دراستها. هذا الموضوع له أهمية كبيرة للمستخدمين الذين يودون متابعة تقدمهم التعليمي عبر مختلف الدورات.
كيفية تنفيذ ميزة تزامن حالة عدم إكمال الدروس
يمكنك استخدام مجموعة من الأكواد سنوضحها في هذا المقال، تفيد في تحقيق الغرض المنشود. الفكرة العامة هي أن تقوم بإنشاء دالة مخصصة، تتم عبرها مزامنة حالة عدم إكمال الدروس بين جميع الدورات المشتركة. تتطلب هذه العملية استخدام مجموعة من الإجراءات والأكواد ذات الصلة بـ LearnDash.
إنشاء دالة لتحديد الدروس على أنها غير مكتملة
للقيام بذلك، عليك أولاً كتابة دالة تقوم بتحديد الدروس كغير مكتملة. في المثال أدناه، يتم تحديد الدروس كغير مكتملة لجميع الدورات المشتركة:
function nzf_sync_lesson_incompletion($user_id, $course_id, $lesson_id) {
if (!empty($lesson_id)) {
$shared_courses = learndash_get_courses_for_step($lesson_id, true);
// تكرار خلال الدورات المشتركة
foreach ($shared_courses as $shared_course_id => $value) {
// تخطي الدورة الحالية
if ($shared_course_id == $course_id) {
continue;
}
// تحديد الدرس كغير مكتمل للمستخدم في الدورة المشتركة
custom_learndash_mark_lesson_incomplete($shared_course_id, $lesson_id, $user_id);
}
}
}
add_action('learndash_mark_incomplete_process', 'nzf_sync_lesson_incompletion', 8, 3);
تعمل هذه الدالة على تحديد حالة عدم إكمال الدروس بفعالية، وذلك من خلال مراجعة الدورات المشتركة مع الدرس المطلوب.
تفاصيل إضافية حول التعامل مع تقدم المستخدم
تتطلب عملية تحديث حالة عدم الإكمال معالجة تقدم المستخدم بطريقة مناسبة. إليكم كيفية القيام بذلك:
function custom_learndash_mark_lesson_incomplete($id, $lesson_id, $user_id) {
// استرجاع تقدم المستخدم للدورة المحددة
$user_progress = learndash_user_get_course_progress($user_id, $id, 'legacy');
if (isset($user_progress['lessons'])) {
// إزالة الدرس من التقدم (تحديده كغير مكتمل)
unset($user_progress['lessons'][$lesson_id]);
// تقليل عدد الدروس المكتملة
$user_progress['completed'] -= 1;
// تحديث معرف الدرس المكتمل الأخير
$user_progress['last_id'] = array_key_last($user_progress['lessons']);
}
// تحديث تقدم الدورة للمستخدم
$usermeta = get_user_meta($user_id, '_sfwd-course_progress', true);
$course_progress = $usermeta;
// تحديث التقدم لدورة معينة
if (isset($course_progress[$id])) {
$course_progress[$id] = learndash_course_item_to_activity_sync($user_id, $id, $user_progress, $course_progress[$id]);
} else {
$course_progress[$id] = $user_progress;
}
// حفظ التقدم المحدث
update_user_meta($user_id, '_sfwd-course_progress', $course_progress);
// تحديد الدرس كغير مكتمل للدورة المحددة
learndash_process_mark_incomplete($user_id, $id, $lesson_id);
// تحديث تقدم المجموعة إذا لزم الأمر
learndash_update_group_course_user_progress($id, $user_id);
}
تطبيق الاستراتيجيات بشكل فعال
تتطلب ميزة "تزامن حالة عدم إكمال الدروس عبر جميع الدورات في LearnDash" تكاملًا دقيقًا بين الأكواد والإجراءات الموجودة. باستخدام الأكواد المقدمة، يمكنك ضمان أن كل درس غير مكتمل يتم تحديثه بشكل متزامن عبر جميع الدورات المشتركة. هذا الأمر سيعزز من تجربة التعلم للمستخدمين ويدعم قدرتهم على تتبع تقدمهم بفاعلية.
في النهاية، يعتبر تزامن حالة عدم إكمال الدروس أمرًا مهمًا لتحسين تجربة التعلم على منصات مثل LearnDash. عليك دائمًا مراجعة الأكواد وتعديلها حسب الحاجة لضمان أقصى استفادة من الميزات المتاحة.