إضافة فلتر إلى BuddyPress لتحويل الوقت من GMT إلى المحلي
تعتبر عملية التعامل مع التواريخ والأوقات إحدى المهام الأساسية في أي تطبيق ويب. وعند استخدام ووردبريس وBuddyPress، نجد أن الأوقات عادة ما تُخزن في قاعدة البيانات بتوقيت GMT/UTC، مما قد يتسبب في بعض المشاكل في عرض الأوقات بشكل صحيح. هذا المقال سيتناول كيفية إضافة فلتر إلى دالة BuddyPress لتغيير الوقت المخزن من توقيت GMT إلى التوقيت المحلي، مما يوفر مزيداً من الدقة والملاءمة للمستخدمين.
لماذا يجب استخدام التوقيت المحلي؟
عند العمل بتطبيقات تحتوي على ميزات تتعلق بالتوقيت، فإن تخزين الوقت بتنسيق GMT قد يؤدي إلى أخطاء في العرض. على سبيل المثال، إذا كان لديك موقع يستهدف مستخدمين في أوروبا التي تسبق UTC بساعتين، فستظهر الأوقات بشكل خاطئ للمستخدمين. وبالتالي، يكون من الضروري ضمان حفظ الأوقات بالتوقيت المحلي لتحسين تجربة المستخدم.
كيفية إضافة فلتر لتغيير توقيت BuddyPress
من أجل تغيير التوقيت الذي يتم حفظه في قاعدة البيانات، يمكنك استخدام الفلتر المناسب في الدالة الأساسية لـ BuddyPress. هذه الدالة، bp_core_current_time
، تتطلب معلمة تدعى $gmt
، والتي تحدد ما إذا كان ينبغي استخدام توقيت GMT أو المحلي.
لنفترض أنك ترغب في تغيير قيمة $gmt
إلى false
بحيث يتم حفظ الوقت كالتوقيت المحلي. لإجراء ذلك، يمكننا إضافة فلتر بسيط.
add_filter('bp_core_current_time', 'custom_current_time_function');
function custom_current_time_function($gmt = true, $type = 'mysql') {
return current_time($type, false); // نستخدم false لقيمة GMT
}
يمكنك أن ترى أن الدالة current_time
تأخذ نوعين من المعلمات: النوع وهو محدد هنا كـ mysql
، والوقت المحلي الذي نحدد له بـ false
. باستخدام هذا الفلتر، سوف يتم تغيير قيمة $gmt
إلى false
بشكل فعال.
التحديات الممكنة والحلول
عندما تتم إضافة الفلتر، قد تواجه بعض التحديات، مثل الرسائل الخطأ المتعلقة بتنسيق التاريخ. من المعروف أن هذا يحدث عندما يكون هناك تعارض في المعلمات المرسلة إلى الدالة. إذا ظهر لك الخطأ "Uncaught TypeError: date(): Argument #2 ($timestamp) must be of type ?int، string given"، فهذا يعني أن بالفعل تنسيق التاريخ غير صحيح.
إذا كنت تواجه مشكلة في استدعاء الدالة، يمكنك تعديل فلتر custom_current_time_function
لضمان أن كل شيء يعمل كما ينبغي. هنا هو الشكل المعدل:
add_filter('bp_core_current_time', 'custom_current_time_function');
function custom_current_time_function( $gmt, $type = 'mysql' ) {
return current_time($type, false);
}
بهذه الطريقة، تضمن أن الدالة تستقبل القيمة الصحيحة قبل القيام بأي معالجة.
الاختبار والتأكيد
بعد تغيير الفلتر، قم بتشغيل التطبيق واختبر الوظائف الجديدة. تأكد من أن الأوقات الآن تُعرض بشكل صحيح أمام المستخدمين. يمكنك استخدام أدوات التطوير أو أي نوع من أنواع أدوات المساعدة للتأكد من أن البيانات تُعرض كما ينبغي.
باستخدام هذه الأساليب، يمكنك تغيير طريقة حفظ الوقت في BuddyPress بسهولة وفاعلية، مما يحسن من تجربة المستخدمين ويجعل كل شيء يبدو أكثر توافقًا مع الإعدادات المحلية. يعتبر هذا التغيير حلاً عمليًا دون الحاجة إلى تعديل أي من ملفات النواة في BuddyPress.
من خلال اتباع الخطوات المذكورة، ستكون على الطريق الصحيح لتغيير توقيت BuddyPress من GMT إلى التوقيت المحلي، مما يساعد في خلق تجربة مستخدم أفضل.