وضع نماذج أولية لتطبيق يشبه Trello باستخدام واجهة برمجة تطبيقات WordPress REST
نشرت: 2017-02-03لقد روجنا مرارًا وتكرارًا لـ WordPress's REST API منذ إعلانها ، كخطوة نحو حقبة جديدة للمنصة. في هذا المنشور ، سنستفيد من كل ما تعلمناه في الأسابيع القليلة الماضية ، باستخدام مثال يوضح مدى قوة وتنوع واجهة برمجة تطبيقات WordPress REST.
نظرًا لأن قابلية التشغيل البيني بين اللغات المختلفة تكمن في صميم ماهية REST ، سنقوم بتصميم نموذج أولي ، تطبيق يشبه Trello ، باستخدام تصنيفات منشورات ووردبريس جيدة ولكن مع تطور! بهذه الطريقة ، نأمل أن نوضح كيف يمكن استخدام WordPress كمنصة تطوير.
Trello هو تطبيق ناجح لإدارة المشاريع يستخدم نموذج Kanban ، الذي شاع في الأصل من قبل Toyota في الثمانينيات. يتم تمثيل المشاريع على شكل لوحات تحتوي على أعمدة مليئة بالبطاقات المقابلة للمهام. تنتقل البطاقات من عمود إلى آخر ، حتى تصبح في حالة " تم" ( على سبيل المثال ، من Todo إلى Doing إلى Done). يسمى هذا التدفق تيار القيمة. الفكرتان الأساسيتان وراء كانبان هما: أ) تصور عملك ، و ب) تقييد عملك الحالي الجاري. في حالة Trello ، يتم تصور العمل باستخدام بطاقات رسومية. يمكن أن تحتوي الأعمدة على سعات قصوى أيضًا ، مما يعني أنه يمكنك وضع كمية محددة من المهام في عمود وليس أكثر من ذلك. على سبيل المثال ، تبلغ سعة عمود " القيام " أدناه 2.
تصميم التطبيق
سنقوم بتصميم نسخة بسيطة من نموذج كانبان كدليل على المفهوم. الوظائف الرئيسية هي كما يلي:
- يمكن للمستخدمين إنشاء / تحديث / حذف أعمدة جديدة.
- يمكن للمستخدمين إنشاء / تحديث / حذف بطاقات جديدة تندرج تحت عمود معين.
الفكرة الأساسية لكيفية تنفيذ كل هذا بسيطة للغاية باستخدام واجهة برمجة تطبيقات REST:
- يتم تمثيل أعمدة كانبان في شكل فئات WordPress .
- يمكن وضع سعة العمود كأرقام صحيحة في أوصاف الفئات .
- بطاقات كانبان كمشاركات تم تخصيصها لفئة .
- نقل البطاقة من عمود إلى آخر يعني ببساطة تغيير الفئة المقابلة للمنشور .
باتباع فكرة "التكرار مبكرًا وغالبًا" للنماذج الأولية السريعة ، فإن واجهات Kanban API المقدمة أدناه هي مجرد مسودات. يتم استقراء الوظائف من الوظيفتين الرئيسيتين المذكورتين سابقًا ، وتعيين أصول WordPress للأعمدة إلى الفئات والبطاقات إلى المنشورات. ليس هناك شك في أن مشاكل جديدة وصعبة ستظهر بمجرد بدء التنفيذ الفعلي للنموذج الأولي ، لكن المسودات التالية كافية لنا للبدء بها!
أعمدة كانبان API
توثق القائمة أدناه الوظائف التي ستتعامل مع أعمدة كانبان ، إلى جانب أنواع المعلمات الخاصة بها. سيتم تمثيل الأعمدة على أنها فئات WordPress ، وسيتم إضافة رقم سعتها في وصف الفئة. لا توثق هذه القائمة أي قيم إرجاع ، حيث يكفي كائن استجابة JSON من WordPress لهذا النموذج الأولي.
ومع ذلك ، ستعيد جميع الوظائف صوابًا أو خطأً للإشارة إلى ما إذا كانت العملية قد اكتملت بنجاح أو إذا حدث خطأ ما. في الحالة الأخيرة ، يمكن العثور على السبب الحقيقي داخل كائن استجابة JSON ، ولكن بشكل عام ، لن يتم توفير تحكم حقيقي في الخطأ للنموذج الأولي لإثبات المفهوم.
• create_new_col (cname: string، cap: int)
قم بإنشاء عمود كانبان جديد يسمى cname مع عدد صحيح يمثل السعة.
مورد واجهة برمجة تطبيقات WordPress: أنشئ فئة جديدة
سيؤدي هذا إلى إنشاء فئة جديدة ، ثم إضافة رقم السعة الصحيح إلى وصف الفئة.
• change_col_name (الاسم القديم: سلسلة ، اسم جديد: سلسلة)
قم بتغيير اسم عمود كانبان من الاسم القديم إلى الاسم الجديد .
مورد WordPress API: قم بتحرير فئة
سيؤدي هذا ببساطة إلى تغيير اسم الفئة.
• change_col_cap (newcap: int )
تغيير سعة العمود إلى newcap.
مورد WordPress API: قم بتحرير فئة
سيؤدي هذا إلى تغيير وصف الفئة المقابلة لإضافة رقم السعة الجديد.
• delete_col (اسم العمود: سلسلة)
يحذف العمود المسمى colname.
مورد WordPress API: حذف فئة
هذا ببساطة يحذف الفئة المقابلة للعمود. من خلال القيام بذلك ، ستتم بشكل فعال "التخلص" من البطاقات الموجودة تحت هذا العمود. الأمر متروك لك لتقرر كيفية تنفيذ هذا الحذف. على سبيل المثال ، إما أ) حذف عمود يعني حذف كل شيء تحت هذا العمود أو ب) حذف "ناعم" ربما من خلال إعادة تسمية البطاقات الموجودة تحته كـ _del_ <category> ، لذلك يمكنك إلغاء حذفها في المستقبل.
واجهة برمجة تطبيقات بطاقات كانبان
القائمة أدناه هي نفسها ، لكن لبطاقات كانبان. سيتم تمثيل البطاقات كمنشورات WordPress ، باستخدام عنوان المنشور بشكل فعال لوصف المهمة التي يتعين القيام بها. يمكن استخدام محتوى المنشور كحاوية إضافية للملاحظات.
• create_new_card (cname: string)
ينشئ بطاقة جديدة باسم cname.
سيؤدي هذا إلى إنشاء منشور جديد بدون محتوى ، ولكن نظرًا لأنه لا ينتمي إلى أي فئة ، يجب ألا يكون مرئيًا للمستخدم.
• create_new_card (cname: string، c: string)
إنشاء وظيفة جديدة مع العنوان cname والمحتوى ج.
نفس ما ورد أعلاه ، ولكن يتم إنشاء البطاقة بالمحتوى أيضًا.
• create_new_card (cname: string، cont: string، colname: string)
قم بإنشاء منشور جديد بعنوان cname ، محتوى تابع ، تحت اسم col الفئة.
مورد واجهة برمجة تطبيقات WordPress: أنشئ منشورًا جديدًا
• add_card_col (cname: string ، colname: string)
يضيف بطاقة بالاسم cname إلى العمود الذي يحمل الاسم colname.
مورد WordPress API: تحرير منشور
• move_card_col (cname: string ، colname: string)
ينقل البطاقة التي تحمل الاسم cname ضمن العمود المسمى colname. يجب أن يؤدي هذا إلى إزالة الفئة القديمة من المنشور قبل إضافة الجديد.
مورد WordPress API: تحرير منشور
• delete_card (cname: string)
يحذف بطاقة باسم cname.
مورد WordPress API: حذف منشور
يؤدي هذا إلى حذف مدمر أم لا ، اعتمادًا على ما إذا كنت قد قمت بتمكين سلة المهملات في مدونة WordPress الخاصة بك.
تكامل البيانات
الآن بعد أن قمنا بتعيين وظائفنا لاستدعاءات وأصول WordPress API ، نحتاج إلى التأكد من أن بياناتنا تظل متسقة. على سبيل المثال ، لا يمكن لعمود كانبان الذي تبلغ سعته 2 ، أن يحتوي على أكثر من بطاقتين. لا يمكن أن تكون البطاقة في عمودين في نفس الوقت. عندما يتم نقل بطاقة إلى عمود آخر ، يجب حذفها من مكانها. ومع ذلك ، لا يعرف WordPress أي شيء على الإطلاق عن هذه القيود ، لذلك يحتاج تطبيقنا إلى التحقق منها وفرضها في كل عملية كتابة.
نظرًا لأن هذا نموذج أولي ، فلن تكون جميع حالات الحافة واضحة من مرحلة التصميم. هذه سوف تظهر حتما أثناء تنفيذ كل وظيفة.
مزيد من العمل
حتى الآن تحدثنا فقط عن واجهات برمجة التطبيقات التي ستقود تطبيق Kanban الخاص بنا باستخدام موارد WordPress بطرق مختلفة. سيكون نموذجنا الأولي ناقصًا بشكل خطير إذا كان يتألف فقط من مجموعة من واجهات برمجة التطبيقات الخلفية بدون واجهة أمامية يمكن للأشخاص استخدامها بالفعل. مرة أخرى ، نرى هنا تعدد استخدامات واجهات برمجة تطبيقات REST ، حيث لا يوجد أحد يقول كيف يجب أن تفعل ذلك. يمكنك استخدام شيء مثل Bootstrap ، أو كتابة واجهة مستخدم أولية جيدة في Java ؛ لا يوجد حد فعليًا لما يمكنك استخدامه.
يدعم نموذجنا الأولي أيضًا لوحة Kanban واحدة فقط ، أي مشروع واحد ، مرتبط بمثيل WordPress الخاص بك. ربما يكون هذا مقبولًا لإثبات المفهوم ولكن من الواضح أنه غير مقبول لمنتج نهائي. يتمثل أحد الحلول في تعيين مفاهيم Kanban لتصنيف WordPress بطريقة مختلفة وأكثر فاعلية ، وهو ما من شأنه أن يدعم لوحات Kanban المتعددة وحتى المزيد من الميزات مثل تعاون الفريق.
أصبح تطوير WordPress مثيرًا حقًا!