การย้ายเว็บช็อปของ Yoast.com จาก EDD ไปยัง WooCommerce
เผยแพร่แล้ว: 2018-02-27ที่ Yoast เราเพิ่มประสิทธิภาพทุกด้านของประสิทธิภาพของเว็บไซต์ เป้าหมายของเราคือทำให้เว็บเป็นที่ที่ดีขึ้นโดยทำให้เว็บไซต์ใช้งานได้มากขึ้น นำทางได้ง่ายขึ้น เร็วขึ้น และเชื่อถือได้มากขึ้น
ในเดือนกันยายน 2017 เราได้ย้ายเว็บช็อปของเราจาก Easy Digital Downloads (EDD) ไปยัง WooCommerce ซึ่งเป็นที่ที่เราขายเครื่องมือ ผลิตภัณฑ์ และเนื้อหาทั้งหมดที่มีอยู่ใน yoast.com ในโพสต์นี้ ฉันจะอธิบายว่าทำไมเราถึงทำมัน สิ่งที่เราสร้างขึ้น และสิ่งที่จะเป็นประโยชน์ต่อเราและสำหรับผู้ใช้ของเราในอนาคต WooCommerce ได้มอบพื้นฐานทางเทคนิคให้กับเราเพื่อสร้างต่อไปในอีกหลายปีข้างหน้า
ทำไมการเปลี่ยนแปลง?
Yoast.com กำลังประสบกับการเติบโตอย่างไม่น่าเชื่อโดยได้รับแรงหนุนจากสององค์ประกอบหลัก — ความนิยมของปลั๊กอินของเรา และจำนวนผู้ชมที่เพิ่มขึ้นของบล็อก SEO ของเรา อย่างไรก็ตาม การรวมกันของสององค์ประกอบนี้ทำให้ yoast.com เป็นเว็บไซต์ที่ท้าทายในการจัดการ
ในอดีต ไซต์มีวิวัฒนาการมาจากการติดตั้ง WordPress แบบง่ายๆ Easy Digital Downloads (EDD) ถูกเพิ่มโดย Joost de Valk ผู้ก่อตั้ง Yoast เพื่ออำนวยความสะดวกในการขายปลั๊กอินระดับพรีเมียม เรายังใช้ EDD เพื่อให้บริการอัปเดตสำหรับการติดตั้ง Premium ทั้งหมดที่มีอยู่ทั่วโลก
ตลอดหลายปีที่ผ่านมา เราได้ปรับเปลี่ยนมากขึ้นเรื่อยๆ เพื่อให้แน่ใจว่า EDD ยังคงสามารถตอบสนองความต้องการของเราได้ การทำให้ลูกค้าของเราสามารถชำระเงินเป็นสกุลเงินยูโรหรือดอลลาร์ได้ เป็นความพยายามอย่างมาก เนื่องจากเราต้องการเพิ่มสกุลเงินอื่นๆ ในอนาคต เราจึงจำเป็นต้องค้นหาโซลูชันอื่น
เมื่อเราพิจารณาตัวเลือกอื่นๆ เราพิจารณาความต้องการหลายประการ:
- สามารถรองรับการซื้อหลายสกุลเงินได้
- สามารถรองรับการชำระเงินแบบเป็นงวดได้
- ค่าใช้จ่ายในการรวมอาคารและการบำรุงรักษาแพลตฟอร์ม
- สามารถรองรับบัญชีผู้ใช้งาน
- การสร้างแพลตฟอร์ม SEO
- โดยคำนึงถึงความเข้ากันได้ในอนาคต เนื่องจากเราต้องการมีไซต์ที่จะยังใช้งานได้ใน 5-10 ปี
เพื่อให้บรรลุสิ่งที่กล่าวมาทั้งหมด เราต้องคิดแผน
ความคิด
ในเดือนมกราคม 2017 เราได้กำหนดการประชุมกับทีมสถาปนิกของเรา: Joost, Omar, Jip และตัวฉันเอง เราได้พูดคุยกันถึงความต้องการของเรา และเราจะตอบสนองความต้องการเหล่านั้นได้อย่างไร
ข้อสรุปแรกของเราคือเราไม่ต้องการย้ายออกจาก WordPress แม้ว่าตอนนี้เรามีปลั๊กอินสำหรับแพลตฟอร์มอื่นแล้ว แต่เราเป็นแฟนของ WordPress และใส่ใจในภารกิจของมันอย่างสุดซึ้ง WordPress เป็นจุดเริ่มต้นของเรา และมันทำงานได้ดีมากสำหรับเราในฐานะ CMS
ทำไมต้อง WooCommerce?
จากนั้นเราพิจารณาว่าแพลตฟอร์มอีคอมเมิร์ซใดที่เราต้องการใช้ เราถามตัวเองว่าโซลูชันอีคอมเมิร์ซที่ดีที่สุดสำหรับ WordPress คืออะไร และได้ข้อสรุปว่าเป็น WooCommerce แต่เช่นเดียวกับ EDD WooCommerce ไม่รองรับหลายสกุลเงิน ดังนั้นเราจึงต้องการวิธีแก้ปัญหา
ฉันเป็นแฟนตัวยงของแนวคิดที่ว่าทุกอย่างเป็นการรีมิกซ์ เราได้รับแรงบันดาลใจจากแนวคิดในการใช้ไซต์ที่แตกต่างกันสำหรับแต่ละภาษา ซึ่งเป็นแนวคิดที่ใช้งานได้ดีโดยปลั๊กอิน MultilingualPress ดังนั้นเราจึงรีมิกซ์มัน: เพื่อหลีกเลี่ยงไม่ให้ต้องเขียนโค้ดที่กำหนดเองจำนวนมาก เราจึงตัดสินใจใช้การติดตั้งแบบหลายไซต์
ด้วยเหตุนี้ WooCommerce จึงไม่จำเป็นต้องจัดการสกุลเงินต่างๆ บนไซต์ดอลลาร์ WooCommerce ทำทุกอย่างในสกุลเงินดอลลาร์ บนไซต์ยูโร WooCommerce ทำทุกอย่างในสกุลเงินยูโร นอกจากนี้ยังทำให้ง่ายต่อการเพิ่มสกุลเงินใหม่ เราเพียงแค่เพิ่มไซต์ใหม่และคัดลอกการตั้งค่า เมื่อใช้ร่วมกับ MultilingualPress ในอนาคต สิ่งนี้จะทำให้เราสามารถสนับสนุนภาษาต่างๆ ได้
WooCommerce เหมาะอย่างยิ่งสำหรับ yoast.com ด้วยเหตุผลหลายประการ:
- แบบจำลองข้อมูลที่ดี
- ระบบนิเวศขนาดใหญ่
- รองรับ REST API และ Webhook ในตัว
- ความเป็นไปได้ในการลองใช้ปลั๊กอินของเราร่วมกับ WooCommerce
- WooCommerce แก้ปัญหาโดเมนอีคอมเมิร์ซ เราไม่ต้องการใช้เวลามากในการทำงานกับโดเมนอีคอมเมิร์ซ SEO คือความเชี่ยวชาญของเรา เราจึงต้องการเน้นที่ SEO
- WooCommerce มีชุมชนที่มีชีวิตชีวาซึ่งเราสามารถเข้าร่วมได้
อีคอมเมิร์ซ: SKU บันทึกประวัติศาสตร์ และการคืนเงิน
ฉันต้องการมุ่งเน้นไปที่โดเมนอีคอมเมิร์ซสักครู่ แง่มุมหนึ่งที่ต้องพิจารณาคือ SKU ทุกผลิตภัณฑ์มี SKU — ตัวระบุที่ไม่ซ้ำกัน SKU อาจฟังดูฟุ่มเฟือย เหตุใดฉันจึงต้องใช้ SKU ในเมื่อฉันมี ID ในฐานข้อมูล แต่แล้วคุณจะรู้ว่าทุกแผนกการเงินของทุกบริษัทมีระบบนี้อยู่แล้ว SKU ไม่ได้ถูกเพิ่มโดยอัตโนมัติ คุณต้องมีวิธีในการติดตามสินค้าในลักษณะที่ชัดเจน ชื่อไม่เหมาะกับสิ่งนี้ ดังนั้นบน yoast.com SKU จึงเป็นหมายเลขเดียวกับที่แผนกการเงินของเราใช้เพื่อติดตามผลิตภัณฑ์
ข้อกำหนดอีกประการหนึ่งคือต้องมีประวัติการซื้อทุกครั้ง WooCommerce ทำสิ่งนี้โดยค่าเริ่มต้น เมื่อสั่งซื้อเสร็จแล้วก็เท่านั้น ข้อมูลทั้งหมดจะไม่เปลี่ยนรูป หากลูกค้าเปลี่ยนชื่อ ที่อยู่ หรืออีเมล ข้อมูลใหม่จะใช้สำหรับคำสั่งซื้อใหม่เท่านั้น สำหรับนักพัฒนา อาจฟังดูแปลก แต่จริงๆ แล้วเป็นจุดแข็ง คุณไม่ต้องการให้ธนาคารของคุณเปลี่ยนแปลงธุรกรรมหลังจากที่ทำเสร็จแล้ว การกลายพันธุ์เป็นธุรกรรมใหม่
การมีบันทึกทางประวัติศาสตร์ทำให้เกิดความแตกต่างมากที่สุดในการคืนเงิน ในการตั้งค่าแบบเก่า คำสั่งซื้อที่คืนเงินจะหายไปจากการส่งออกของเรา ซึ่งจะเปลี่ยนรายได้ของเดือนนั้น ใน WooCommerce การคืนเงินทุกครั้งจะมีวันที่และจำนวนเงินของตัวเอง ทำเดือนละครั้งก็เสร็จจริงๆ
ใน WooCommerce การคืนเงินทุกครั้งจะมีวันที่และจำนวนเงินของตัวเอง ทำเดือนละครั้งก็เสร็จจริงๆ
รายละเอียดทางเทคนิคของการย้าย Yoast.com ไปยัง WooCommerce
การโยกย้าย
เรามีข้อมูลในอดีตจำนวนมาก ซึ่งหมายความว่าเราต้องย้ายคำสั่งซื้อจำนวนมาก เราเลือกเครื่องมือที่เรียกว่า pandas ซึ่งเป็นเครื่องมือที่ออกแบบมาเพื่อจัดการกับชุดข้อมูลขนาดใหญ่ และเป็นตัวเลือกที่ดีสำหรับการโยกย้ายข้อมูลทั้งหมดในคราวเดียว หากเราวางแผนการย้ายถิ่นอีกครั้ง เราก็อาจจะไปในทิศทางที่ต่างออกไป – เราจะค่อย ๆ จัดรูปแบบข้อมูลย้อนหลังเป็นเวลาหลายเดือน ซึ่งจะลดปริมาณข้อมูลที่จะย้ายลงอย่างมากในวันที่ทำการย้ายจริง
มีจุดปวดสำคัญจุดหนึ่งที่ทำให้กระบวนการซับซ้อนกว่าที่ควรจะเป็น เนื่องจากข้อมูลทั้งหมดถูกบันทึกในค่า meta เดียวในฐานข้อมูล จึงจำเป็นต้องยกเลิกการซีเรียลไลซ์ Python ไม่มีวิธีที่มีประสิทธิภาพและถูกต้องในการทำ PHP unserialization ดังนั้นเราจึงลงเอยด้วยการใช้ PHP เพื่อยกเลิกการซีเรียลไลซ์ข้อมูลนี้
การรวมข้อมูล
คุณอาจสังเกตเห็นว่าขณะนี้เรามีสองไซต์ แต่เรายังคงต้องการมีภาพรวมของข้อมูลทั้งหมดในที่เดียว นี่เป็นหนึ่งในเหตุผลที่เราสร้าง MyYoast คำสั่งซื้อทั้งหมดที่เราได้รับจะซิงค์กับ MyYoast ซึ่งหมายความว่า MyYoast รู้ทุกอย่าง
WooCommerce มีระบบในการซิงค์คำสั่งซื้อทั้งหมด: เว็บฮุค ข้อเสียที่ใหญ่ที่สุดของเว็บฮุคโดยทั่วไปคือถ้าระบบการรับหยุดทำงาน เว็บฮุคจะไม่ได้รับ เมื่อดูโค้ดของ webhooks คุณจะพบข้อมูลโค้ดต่อไปนี้:
“`
/*
* ให้ปลั๊กอินอื่นดักส่งสำหรับคิวข้อความบางอย่างเช่น rabbit/zeromq
*/
ส่งคืน apply_filters( 'woocommerce_webhook_should_deliver', $should_deliver, $this, $arg );
“`
เราพิจารณาใช้คิวข้อความตามที่แนะนำในความคิดเห็น แต่เราใช้วิธีที่ง่ายกว่า
มีโครงการ delayed_job จากชุมชน Ruby on Rails เราพบพอร์ต PHP ที่เหมาะกับความต้องการของเรา งานล่าช้าทำตามชื่อของมัน: มันกำหนดเวลางานที่จะดำเนินการในภายหลัง ซึ่งหมายความว่างานจะไม่มีวันสูญหาย และถ้างานล้มเหลว จะลองใหม่อีกสี่ครั้ง หลังจากนั้น สามารถใช้งานนี้เพื่อแก้ไขจุดบกพร่องที่ผิดพลาดได้ สิ่งนี้ทำให้เรามีการตั้งค่าที่แข็งแกร่งมาก
เรากำหนดค่า WooCommerce ให้พยายามส่งเว็บฮุคไปยัง URL จำลองที่กำหนดเองของเรา: `http://my-yoast-job.url` เพื่อให้แน่ใจว่าเราสามารถรับคำขอเหล่านี้จากโค้ดได้ เรามีคลาส `Scheduler' หนึ่งคลาสซึ่งมีหน้าที่จัดตารางเวลางาน มันจับคำขอเว็บฮุคและเปลี่ยนเป็นงานแทน
เรามีคลาสหลายคลาสที่จัดการงาน หนึ่งคลาสสำหรับส่วนประกอบพื้นฐานแต่ละอันของ yoast.com งานจะถูกจัดการโดยคนงานในเบื้องหลัง กระบวนการนี้รวดเร็ว ดังนั้นลูกค้าจะเห็นผลิตภัณฑ์ของตนใน MyYoast ทันที
WordPress เป็นแอปพลิเคชัน
หากคุณไม่เคยอ่าน The Twelve-Factor App ฉันขอแนะนำอย่างยิ่งให้คุณอ่าน มันแนะนำกรอบการทำงานที่แข็งแกร่งมากสำหรับการพัฒนาเว็บแอปพลิเคชัน สิ่งนี้แปลเป็นบริบทของ WordPress ได้อย่างไร ดีกว่าที่คุณคิด
WordPress มีคุณสมบัติพิเศษบางอย่างที่ทำให้การตั้งค่ายากขึ้น แต่คุณสามารถหลีกเลี่ยงสิ่งเหล่านั้นเพื่อรับการติดตั้ง WordPress ที่มีประสิทธิภาพ หากคุณทำอย่างใดอย่างหนึ่งเท่านั้น มันควรจะเป็นปัจจัยการพึ่งพา เริ่มใช้นักแต่งเพลง! อยู่ที่นี่และได้ผล Rarst ได้สร้างภาพรวมที่ดีเกี่ยวกับวิธีใช้ Composer สำหรับการพัฒนา WordPress การอัปเดตอัตโนมัติไม่ใช่ตัวเลือกสำหรับเว็บแอปพลิเคชันที่ซับซ้อน ดังนั้น คุณต้องการโซลูชันอื่น และ Composer ก็ทำงานได้ดีมาก
ผลงาน
เราเริ่มต้นโดยไม่ต้องใช้แคชวัตถุ นั่นกลายเป็นความคิดที่ไม่ดี หากคุณจัดการปริมาณการขายจำนวนมากโดยใช้ WooCommerce คุณต้องมีการแคชวัตถุ หากไม่มี รูปแบบคำสั่งซื้อจะต้องได้รับการพิสูจน์ใหม่ทั้งหมดในทุกคำขอที่เกี่ยวข้องกับคำสั่งซื้อนั้น มีค่าใช้จ่ายสูงมาก เนื่องจากต้องใช้รูปแบบการสั่งซื้อในหลาย ๆ หน้า อย่างน้อยที่สุด หน้าชำระเงินทั้งหมดต้องเข้าถึงคำสั่งซื้อ
นอกจากนี้เรายังได้สร้างคำขอดึงสองสามรายการบน WooCommerce เพื่อปรับปรุงประสิทธิภาพโดยไม่ต้องแคช หนึ่งในนั้นคือการดัดแปลงเพื่อแคชสกุลเงิน ก่อนการปรับเปลี่ยน สกุลเงินทั้งหมดจะได้รับการแปลทุกครั้งที่โค้ดใด ๆ ต้องการเพียงสกุลเงินเดียว นั่นไม่มีประสิทธิภาพมากเมื่อพิจารณาว่าแต่ละร้านดำเนินการในสกุลเงินเดียว
สิ่งหนึ่งที่เราไม่สามารถแก้ไขได้ง่ายๆ ใน WooCommerce คือการค้นหาคำสั่งซื้อและการสมัครสมาชิก การทำเช่นนี้จะส่งผลให้มีการสืบค้นข้อมูลที่อาจลบเว็บไซต์ของเราทั้งหมด — ข้อความค้นหานี้มีการค้นหาเมตาโพสต์จำนวนมากและใช้เวลานาน เราแก้ไขปัญหานี้โดยสร้างฟังก์ชันการค้นหาของเราเองที่ด้านบนของ MyYoast
ปัญหาการค้นหาเมตาจะได้รับการแก้ไขหาก WooCommerce ใช้ตารางที่กำหนดเอง ซึ่งโชคดีอยู่แล้วในแผนงานด้านเทคนิคของ WooCommerce ปัญหานี้ยังแจ้งความคิดของเราเกี่ยวกับปลั๊กอินของเราเองอีกด้วย เราสามารถลดจำนวนคีย์เมตาที่ Yoast SEO สร้างขึ้นได้หรือไม่ ด้วยเหตุนี้ เราจึงได้เพิ่มการสร้างตารางแบบกำหนดเองลงในแผนงานด้านเทคนิคของเราเองด้วย
รายการปัจจุบันของปลั๊กอิน WordPress และส่วนขยาย WooCommerce
เพื่อให้แนวคิดที่ครอบคลุมว่าเราไปถึงที่ใด นี่คือรายการของปลั๊กอินที่เราใช้ในปัจจุบันซึ่งเกี่ยวข้องกับฟังก์ชันของไซต์ของเราในฐานะร้านค้า รายการทั้งหมดมี 55 ปลั๊กอินที่ใช้งานอยู่
- CMB2: ใช้สำหรับเพิ่มฟิลด์ที่กำหนดเองเพิ่มเติมให้กับประเภทโพสต์
- ประเภทฟิลด์ CMB2: ใช้เพื่อแนบโพสต์หลายรายการเป็นค่าเมตา
- ช่องค้นหาโพสต์ CMB2: ใช้เพื่อค้นหาโพสต์เดียวเพื่อแนบเป็นค่าเมตา
- Google Authenticator: การเพิ่ม 2FA ในการเข้าสู่ระบบของเรา
- Google Authenticator, Per User Prompt: วิธีนี้ทำให้พนักงาน Yoast ทุกคนสามารถใช้ 2FA ได้ แต่ลูกค้าไม่จำเป็นต้องใช้
- MailChimp สำหรับ WordPress และ MailChimp สำหรับ WordPress – Premium: ใช้เพื่อเชื่อมต่อคำสั่งซื้อกับ MailChimp
- สมาชิก: สำหรับจัดการสิทธิ์ในบทบาทต่างๆ เช่น วิศวกรสนับสนุน
- MultilingualPress: ใช้เพื่อจัดการไซต์ต่างๆ ในหลายไซต์
- MyYoast Custom Login: กำหนดรูปแบบหน้าจอเข้าสู่ระบบ
- New Relic Reporting สำหรับ WordPress: เราใช้ NewRelic เพื่อติดตามประสิทธิภาพของเรา
- ตราประทับ: สำหรับการส่งอีเมลอย่างน่าเชื่อถือ
- Romance Admin Color Scheme: ทุกคนต้องการสีชมพูเล็กน้อยในชีวิต!
- WooCommerce: อย่างที่คุณอาจเดาได้ ในการประมวลผลคำสั่งซื้อบน yoast.com!
- Yoast SEO: WooCommerce: เพิ่มความเข้ากันได้กับ WooCommerce และ Yoast SEO
- Yoast SEO Premium: ใช้สำหรับเปลี่ยนเส้นทาง คำแนะนำลิงก์ภายใน และคำหลักหลายคำ
รายการปัจจุบันของปลั๊กอิน WordPress และส่วนขยาย WooCommerce
- WooCommerce – การชำระเงินตามประเทศ: ใช้เพื่อแสดงวิธีการชำระเงินที่แตกต่างกันให้กับลูกค้าจากประเทศต่างๆ
- WooCommerce AdyenCw: ใช้เพื่อเพิ่มเกตเวย์การชำระเงิน Adyen ให้กับ WooCommerce
- ลิงก์คูปอง WooCommerce: ใช้เพื่อสร้างลิงก์ที่ใช้คูปองบางรายการโดยอัตโนมัติ
- การ กำหนดราคาแบบไดนามิกของ WooCommerce : ใช้เพื่อเสนอส่วนลดสำหรับการซื้อจำนวนมาก
- เครื่องมือปรับแต่งอีเมลของ WooCommerce: ใช้เพื่อกำหนดรูปแบบอีเมลที่ WooCommerce ส่งออก
- หมายเลข VAT ของ WooCommerce EU: ใช้เพื่อรวบรวมหมายเลข VAT ของลูกค้าในยุโรป และตรวจสอบหมายเลขโดยใช้บริการ VIES
- WooCommerce Give Products: ใช้เพื่อแจกผลิตภัณฑ์
- WooCommerce PayPal Express Checkout Gateway: ใช้เพื่อเพิ่มเกตเวย์การชำระเงิน PayPal ให้กับ WooCommerce พร้อมรองรับการสมัครสมาชิก WooCommerce
- การรวมกลุ่มผลิตภัณฑ์ WooCommerce: ใช้เพื่อสร้างชุดรวมในร้านค้าของเรา
- การสมัครสมาชิก WooCommerce: ใช้เพื่อติดตามเวลาที่เหลืออยู่ในการสนับสนุนและอัปเดตปลั๊กอิน
Takeaways และผลลัพธ์
เราเปิดตัวแพลตฟอร์มใหม่นี้เมื่อวันที่ 29 สิงหาคม 2017 ในสัปดาห์ต่อมา เราได้ปรับปรุงประสิทธิภาพของเว็บไซต์อย่างมาก เราบรรลุเป้าหมายทั้งหมดที่เราต้องการบรรลุแล้ว นับตั้งแต่การย้ายถิ่น เราได้เริ่มสร้างสิ่งอื่นๆ มากมาย ตอนนี้ทีมสนับสนุนของเรามีเวลาคืนเงินและโอนบัญชีได้ง่ายขึ้นมาก เราได้ย้ายสถาบัน Yoast ของเราไปยังหลายไซต์แล้ว และเรามีแผนที่น่าตื่นเต้นมากมายสำหรับปี 2018 ได้แก่:
- เพิ่มร้านที่เราขายเป็นปอนด์อังกฤษ ต้องขอบคุณตัวเลือกที่ผ่านมาของเราและการย้ายไปยัง WooCommerce เราสามารถทำได้ในหนึ่งวัน โดยแทบไม่ต้องมีโค้ดเพิ่มเติมเลย การเพิ่มแดชบอร์ดการขายสำหรับทีมขายของเรา
- การเพิ่มแดชบอร์ดการขายสำหรับทีมขายของเรา
- เพิ่มการรองรับ Composer ให้กับปลั๊กอินพรีเมียมของเรา
WooCommerce ได้มอบรากฐานทางเทคนิคให้กับ Yoast เพื่อสร้างและปรับปรุงแพลตฟอร์มของเราในทศวรรษหน้า คุณกำลังพิจารณาที่จะย้ายเว็บช็อปที่มีอยู่ไปยังแพลตฟอร์มอื่นหรือไม่? คุณได้ทำเช่นนี้แล้ว? แบ่งปันประสบการณ์ของคุณในความคิดเห็น