ترحيل متجر الويب الخاص بـ Yoast.com من EDD إلى WooCommerce
نشرت: 2018-02-27في Yoast ، نقوم بتحسين كل جانب من جوانب أداء مواقع الويب. هدفنا هو جعل الويب مكانًا أفضل من خلال جعل مواقع الويب أكثر قابلية للاستخدام ، وأسهل للتنقل ، وأسرع ، وأكثر موثوقية.
في سبتمبر 2017 ، قمنا بترحيل متجر الويب الخاص بنا من Easy Digital Downloads (EDD) إلى WooCommerce - حيث نبيع جميع الأدوات والمنتجات والمحتوى المتاح على yoast.com. في هذا المنشور ، سأشرح سبب قيامنا بذلك ، وما قمنا ببنائه ، وما هي الفوائد التي ستعود علينا ولمستخدمينا في المستقبل. لقد زودتنا WooCommerce بالأساس التقني للبناء عليه لسنوات قادمة.
لماذا التغيير؟
يشهد Yoast.com نموًا مذهلاً مدفوعًا بمكوّنين رئيسيين - شعبية المكون الإضافي الخاص بنا ، والجمهور المتزايد لمدونة تحسين محركات البحث الخاصة بنا. ومع ذلك ، فإن الجمع بين هذين العنصرين يجعل yoast.com موقعًا صعبًا للإدارة.
تاريخياً ، تطور الموقع من تثبيت WordPress بسيط. تمت إضافة التنزيلات الرقمية السهلة (EDD) بواسطة مؤسس Yoast Joost de Valk لتسهيل بيع المكونات الإضافية المتميزة. استخدمنا أيضًا EDD لخدمة التحديثات لجميع عمليات التثبيت المميزة الموجودة في العالم.
على مر السنين ، قمنا بإجراء المزيد والمزيد من التعديلات للتأكد من أن EDD لا يزال بإمكانه تلبية احتياجاتنا. كان تمكين عملائنا من الدفع باليورو أو الدولار ، على سبيل المثال ، جهدًا هائلاً. نظرًا لأننا أردنا إضافة عملات أخرى في المستقبل ، فقد احتجنا إلى إيجاد حل مختلف.
عندما نظرنا في خيارات أخرى ، أخذنا في الاعتبار عدة احتياجات:
- القدرة على دعم عمليات الشراء متعددة العملات.
- القدرة على دعم المدفوعات المتكررة.
- تكلفة تكامل المبنى وقابلية صيانته للمنصة.
- القدرة على دعم حسابات المستخدمين.
- إنشاء منصة SEO.
- مع الأخذ في الاعتبار التوافق المستقبلي ، لأننا نريد أن يكون لدينا موقع لا يزال يعمل في غضون 5-10 سنوات.
لتحقيق كل ما سبق ، كان علينا وضع خطة.
التفكير
في كانون الثاني (يناير) 2017 ، حددنا موعدًا لعقد اجتماع مع فريق المهندسين المعماريين لدينا: جوست وعمر وجيب وأنا. ناقشنا ما هي احتياجاتنا وكيف يمكننا تلبيتها على أفضل وجه.
كان استنتاجنا الأول أننا لا نريد الابتعاد عن WordPress. على الرغم من أن لدينا الآن مكونات إضافية لمنصات أخرى ، فنحن معجبون بـ WordPress ونهتم بشدة بمهمته. WordPress هو المكان الذي توجد فيه جذورنا ، وقد عمل جيدًا بالنسبة لنا باعتباره CMS.
لماذا WooCommerce؟
ثم نظرنا بعد ذلك في نظام التجارة الإلكترونية الذي أردنا استخدامه. سألنا أنفسنا ما هو أفضل حل للتجارة الإلكترونية لبرنامج WordPress ، وتوصلنا إلى استنتاج مفاده أنه WooCommerce. ولكن ، مثل EDD ، لم تدعم WooCommerce عملات متعددة. لذلك كنا بحاجة إلى حل.
أنا من أشد المعجبين بفكرة أن كل شيء عبارة عن ريمكس. لقد ألهمتنا فكرة استخدام موقع مختلف لكل لغة ، وهي فكرة تم تنفيذها جيدًا بواسطة المكون الإضافي MultilingualPress. لذلك قمنا بإعادة مزجها: لتجنب الاضطرار إلى كتابة الكثير من التعليمات البرمجية المخصصة ، قررنا استخدام تثبيت متعدد المواقع.
نتيجة لذلك ، لا تحتاج WooCommerce إلى إدارة العملات المختلفة. على موقع الدولار ، تقوم WooCommerce بكل شيء بالدولار. على موقع اليورو ، تقوم WooCommerce بكل شيء باليورو. هذا أيضًا يجعل من السهل نسبيًا إضافة عملة جديدة. سنقوم فقط بإضافة موقع جديد ونسخ الإعدادات. بالاشتراك مع MultilingualPress ، سيسمح لنا هذا أيضًا في المستقبل بدعم لغات مختلفة.
انتهى الأمر بـ WooCommerce ليكون مناسبًا تمامًا لموقع yoast.com لعدة أسباب:
- نموذج بيانات جيد.
- نظام بيئي كبير.
- المدمج في REST API ودعم Webhook.
- إمكانية تجريب البرنامج المساعد الخاص بنا بالاشتراك مع WooCommerce.
- WooCommerce يحل مجال التجارة الإلكترونية. لم نرغب في قضاء الكثير من الوقت في العمل على مجال التجارة الإلكترونية. تحسين محركات البحث هو خبرتنا ، لذلك نريد التركيز على تحسين محركات البحث.
- WooCommerce لديها مجتمع نابض بالحياة يمكننا المشاركة فيه.
التجارة الإلكترونية: رموز التخزين التعريفية والسجلات التاريخية والمبالغ المستردة
أريد التركيز للحظة على مجال التجارة الإلكترونية. أحد الجوانب التي يجب مراعاتها هنا هو SKU. كل منتج لديه SKU - معرف فريد. قد يبدو SKU وكأنه شيء غير ضروري. لماذا أحتاج إلى SKU عندما يكون لدي معرف في قاعدة البيانات؟ لكنك تدرك بعد ذلك أن كل دائرة مالية في كل شركة لديها بالفعل هذا النظام. لا يتم زيادة SKU تلقائيًا - فأنت بحاجة إلى طريقة لتتبع المنتجات بطريقة لا لبس فيها. الأسماء ليست مناسبة لهذا. لذلك على yoast.com ، أصبح SKU الآن هو نفس الرقم الذي يستخدمه قسم الشؤون المالية لدينا لتتبع المنتجات.
مطلب آخر هو أن يكون لديك سجل تاريخي لكل عملية شراء. يقوم WooCommerce بهذا بشكل افتراضي. بمجرد اكتمال الطلب ، هذا كل شيء. جميع البيانات غير قابلة للتغيير. إذا قام أحد العملاء بتغيير اسمه أو عنوانه أو بريده الإلكتروني ، فسيتم استخدام المعلومات الجديدة فقط للطلبات الجديدة. قد يبدو هذا غريبًا بالنسبة للمطور ، لكنه في الواقع مصدر قوة. لن ترغب في أن يغير البنك الذي تتعامل معه المعاملات بعد وقوعها أيضًا - بمجرد الانتهاء منها ، يتم إجراؤها. أي طفرة هي صفقة جديدة.
إن الحصول على سجل تاريخي يُحدث الفرق الأكبر عندما يتعلق الأمر بالمبالغ المستردة. في الإعداد القديم ، كانت الطلبات التي تم رد أموالها تختفي من صادراتنا ، مما سيغير أرباح ذلك الشهر. في WooCommerce ، لكل استرداد تاريخ ومبلغ خاص به. لذلك مرة واحدة في الشهر ، يتم ذلك حقًا.
في WooCommerce ، لكل استرداد تاريخ ومبلغ خاص به. لذلك مرة واحدة في الشهر ، يتم ذلك حقًا.
التفاصيل الفنية لترحيل Yoast.com إلى WooCommerce
الهجرة
لدينا الكثير من البيانات التاريخية ، مما يعني أنه كان علينا ترحيل عدد كبير من الطلبات. لقد اخترنا أداة تسمى pandas ، وهي أداة مصممة للتعامل مع مجموعات البيانات الكبيرة ، وخيارًا جيدًا لترحيلها جميعًا مرة واحدة. إذا خططنا لعملية ترحيل أخرى ، فربما نسير في اتجاه مختلف - سنقوم بتنسيق البيانات التاريخية ببطء على مدار أشهر. سيؤدي ذلك إلى تقليل كمية البيانات المراد ترحيلها بشكل كبير في يوم النقل الفعلي.
كانت هناك نقطة مؤلمة رئيسية جعلت العملية أكثر تعقيدًا مما يجب أن تكون. نظرًا لأنه تم حفظ جميع البيانات في قيمة وصفية واحدة في قاعدة البيانات ، فقد كانت بحاجة إلى أن تكون غير متسلسلة. لا تملك Python طريقة فعالة وصحيحة لإلغاء تسلسل PHP ، لذلك انتهى بنا الأمر إلى استخدام PHP لنكون قادرين على إلغاء تسلسل هذه البيانات.
تجميع البيانات
ربما لاحظت أن لدينا الآن موقعين. لكننا ما زلنا نرغب في الحصول على نظرة عامة على جميع البيانات الموجودة في مكان واحد. هذا هو أحد أسباب بناء MyYoast. تتم مزامنة جميع الطلبات التي نتلقاها مع MyYoast. هذا يعني أن MyYoast يعرف كل شيء.
لدى WooCommerce نظام لمزامنة جميع الطلبات: webhooks. أكبر عيب في Webhooks بشكل عام هو أنه في حالة تعطل نظام الاستلام ، لا يتم تلقي Webhook. عند البحث في كود webhooks ، يمكنك العثور على المقتطف التالي:
""
/ *
* دع المكونات الإضافية الأخرى تعترض تسليم بعض الرسائل في قائمة انتظار مثل rabbit / zeromq
* /
إرجاع application_filters ('woocommerce_webhook_should_deliver' ، $ should_deliver ، $ this ، $ arg) ؛
""
لقد فكرنا في استخدام قائمة انتظار الرسائل كما هو مقترح في التعليق ، لكننا اتبعنا نهجًا أبسط.
يوجد مشروع delayed_job من مجتمع Ruby on Rails. وجدنا منفذ PHP يناسب احتياجاتنا. تؤدي الوظيفة المؤجلة ما يوحي به اسمها: فهي تقوم بجدولة مهمة ليتم تنفيذها لاحقًا. هذا يعني أن الوظيفة لا يمكن أن تضيع أبدًا. وإذا فشلت الوظيفة ، فستتم إعادة المحاولة أربع مرات. بعد ذلك ، يمكن استخدام الوظيفة لتصحيح الخطأ الذي حدث. هذا يعطينا إعدادًا قويًا حقًا.
قمنا بتكوين WooCommerce لمحاولة إرسال خطافات الويب إلى عنوان URL الوهمي المخصص لدينا: `http: // my-yoast-job.url`. هذا يضمن أنه يمكننا الحصول على هذه الطلبات من الكود. لدينا فئة "جدولة" واحدة مسؤولة عن جدولة الوظائف. يلتقط طلبات الرد التلقائي على الويب ويحولها إلى وظائف بدلاً من ذلك.
لدينا العديد من الفئات التي تتعامل مع الوظائف ، واحدة لكل من اللبنات الأساسية في yoast.com. ثم يتم التعامل مع الوظائف من قبل عامل في الخلفية. هذه العملية سريعة ، لذلك سيرى العميل منتجاته على الفور في MyYoast.
WordPress كتطبيق
إذا لم تكن قد قرأت تطبيق The Twelve-Factor مطلقًا ، فسأوصي بشدة أن تفعل ذلك. يقترح إطار عمل قوي للغاية لتطوير تطبيقات الويب. كيف يترجم هذا إلى سياق WordPress؟ افضل مما تتصور
يحتوي WordPress على بعض الميزات الفريدة التي تجعل إعداده أكثر صعوبة. ولكن يمكنك التغلب على هؤلاء للحصول على تثبيت قوي لـ WordPress. إذا قمت بإجراء واحد فقط من هذه ، فيجب أن يكون عامل التبعيات. ابدأ في استخدام Composer! إنه هنا ، وهو يعمل. أنشأ Rarst نظرة عامة جيدة حول كيفية استخدام Composer لتطوير WordPress. التحديث التلقائي ليس خيارًا لتطبيق ويب معقد. لذلك أنت بحاجة إلى حل مختلف ، ويقوم Composer بعمل جيد جدًا.
أداء
بدأنا بدون استخدام ذاكرة التخزين المؤقت للكائنات. اتضح أن هذه كانت فكرة سيئة. إذا كنت تتعامل مع حجم كبير من المبيعات باستخدام WooCommerce ، فأنت بحاجة إلى التخزين المؤقت للكائن. بدون ذلك ، يجب إعادة إنشاء نموذج الطلب بالكامل في كل طلب يتعلق بهذا الأمر. إنه مكلف للغاية ، لأن نموذج الطلب مطلوب على عدة صفحات. في الحد الأدنى ، تحتاج جميع صفحات الخروج للوصول إلى الطلب.
أنشأنا أيضًا بعض طلبات السحب على WooCommerce نفسها لتحسين الأداء دون التخزين المؤقت. كان أحد هذه التعديلات عبارة عن تعديل لتخزين العملات في ذاكرة التخزين المؤقت. قبل التعديل ، كانت جميع العملات تُترجم في كل مرة يحتاج فيها أي جزء من الكود إلى عملة واحدة فقط. هذا غير فعال للغاية بالنظر إلى أن كل متجر يعمل بعملة واحدة فقط.
هناك شيء واحد لم نتمكن من إصلاحه داخل WooCommerce نفسه ، وهو البحث عن الطلبات والاشتراكات. قد يؤدي القيام بذلك إلى استعلام قد يؤدي إلى تعطيل موقعنا بالكامل - يحتوي هذا الاستعلام على العديد من عمليات البحث عن ما بعد النشر ، ويستغرق ذلك وقتًا طويلاً. لقد عملنا على حل هذه المشكلة من خلال بناء وظيفة البحث الخاصة بنا فوق MyYoast.
سيتم أيضًا حل مشكلة البحث الميتا إذا استخدمت WooCommerce جداول مخصصة ، وهي موجودة لحسن الحظ بالفعل في خارطة الطريق التقنية لـ WooCommerce. أبلغت هذه المشكلة أيضًا تفكيرنا حول المكون الإضافي الخاص بنا. هل يمكننا تقليل كمية مفاتيح التعريف التي ينشئها Yoast SEO؟ نتيجة لذلك ، أضفنا أيضًا إنشاء جدول مخصص إلى خريطة الطريق التقنية الخاصة بنا.
القائمة الحالية لمكونات WordPress الإضافية وملحقات WooCommerce
لإعطاء فكرة شاملة عن المكان الذي وصلنا إليه ، إليك قائمة المكونات الإضافية التي نستخدمها حاليًا ذات الصلة بوظيفة موقعنا كمتجر. تحتوي القائمة الكاملة على 55 ملحقًا نشطًا.
- CMB2: يستخدم لإضافة المزيد من الحقول المخصصة لأنواع النشر.
- نوع حقل CMB2: يستخدم لإرفاق منشورات متعددة كقيمة وصفية.
- حقل بحث نشر CMB2: يستخدم للبحث عن منشور واحد لإرفاقه كقيمة وصفية.
- Google Authenticator: إضافة 2FA لتسجيل الدخول لدينا.
- Google Authenticator ، لكل موجه مستخدم: بهذه الطريقة يمكن لجميع موظفي Yoast استخدام المصادقة الثنائية ، ولكن لا يتعين على العملاء ذلك.
- MailChimp لـ WordPress و MailChimp لـ WordPress - Premium: يستخدم لتوصيل الطلبات بـ MailChimp.
- الأعضاء: لإدارة الأذونات لأدوار مختلفة ، مثل مهندسي الدعم.
- MultilingualPress: يستخدم لإدارة المواقع المختلفة في المواقع المتعددة.
- تسجيل الدخول المخصص إلى MyYoast: يعمل على تنسيق شاشة تسجيل الدخول.
- New Relic Reporting لـ WordPress: نحن نستخدم NewRelic لتتبع أدائنا.
- ختم البريد: لإرسال رسائل البريد الإلكتروني بشكل موثوق.
- نظام ألوان الإدارة الرومانسية: يحتاج الجميع إلى القليل من اللون الوردي في حياتهم!
- WooCommerce: كما قد تتخيل ، لمعالجة الطلبات على yoast.com!
- Yoast SEO: WooCommerce: إضافة التوافق بين WooCommerce و Yoast SEO.
- Yoast SEO Premium: يستخدم لعمليات إعادة التوجيه واقتراحات الروابط الداخلية وكلمات رئيسية متعددة.
القائمة الحالية لمكونات WordPress الإضافية وملحقات WooCommerce
- WooCommerce - المدفوعات على أساس البلد: تُستخدم لإظهار طرق الدفع المختلفة للعملاء من مختلف البلدان.
- WooCommerce AdyenCw: يُستخدم لإضافة بوابات الدفع Adyen إلى WooCommerce.
- روابط قسيمة WooCommerce: تُستخدم لإنشاء روابط تقوم تلقائيًا بتطبيق قسيمة معينة.
- التسعير الديناميكي لـ WooCommerce : يُستخدم لتقديم خصومات على عمليات الشراء بالجملة.
- WooCommerce Email Customizer: يستخدم لتصميم رسائل البريد الإلكتروني التي يرسلها WooCommerce.
- رقم WooCommerce EU لضريبة القيمة المضافة: يُستخدم لجمع عدد ضريبة القيمة المضافة للعملاء الأوروبيين والتحقق من صحة الرقم باستخدام خدمة VIES.
- منتجات WooCommerce Give: تُستخدم للتخلي عن المنتجات.
- WooCommerce PayPal Express Checkout Gateway: تُستخدم لإضافة بوابة دفع PayPal إلى WooCommerce مع دعم اشتراكات WooCommerce.
- حزم منتجات WooCommerce: تُستخدم لإنشاء الحزم في متجرنا.
- اشتراكات WooCommerce: تُستخدم لتتبع الوقت المتبقي على دعم البرنامج الإضافي والتحديثات.
الوجبات الجاهزة والنتائج
أطلقنا هذه المنصة الجديدة في 29 أغسطس 2017. في الأسابيع التي تلت ذلك ، قمنا بتحسين أداء الموقع بشكل كبير. لقد حققنا جميع الأهداف التي أردنا تحقيقها. منذ الهجرة بدأنا أيضًا في بناء الكثير من الأشياء الأخرى. يتمتع فريق الدعم لدينا الآن بوقت أسهل بكثير في رد الأموال وتحويل الحسابات. لقد قمنا بترحيل أكاديمية Yoast الخاصة بنا إلى المواقع المتعددة. ولدينا مجموعة من الخطط المثيرة لعام 2018 ، بما في ذلك:
- اضافة محل نبيع فيه بالجنيه الاسترليني. بفضل اختياراتنا السابقة وانتقالنا إلى WooCommerce ، يمكننا القيام بذلك في يوم واحد ، ولن يتطلب الأمر رمزًا إضافيًا تقريبًا. إضافة لوحة تحكم للمبيعات لفريق المبيعات لدينا.
- إضافة لوحة تحكم للمبيعات لفريق المبيعات لدينا.
- إضافة دعم Composer إلى مكوناتنا الإضافية المتميزة.
منحت WooCommerce Yoast الأساس التقني الذي ستبني عليه منصتنا وتحسينها في العقد القادم. هل تفكر في ترحيل متجر ويب موجود إلى منصة أخرى؟ هل فعلت هذا بالفعل؟ شارك تجربتك في التعليقات.