การขยายพื้นที่เก็บข้อมูล CRUD ใน WooCommerce
เผยแพร่แล้ว: 2018-01-25คุณเคยได้ยินเกี่ยวกับ CRUD หรือไม่? ในการเขียนโปรแกรม ย่อมาจาก C reate, R ead, U pdate และ D elete ซึ่งเป็นการดำเนินการพื้นฐานที่เราทุกคนดำเนินการกับข้อมูลของเรา ด้วย WooCommerce ซึ่งรวมถึงผลิตภัณฑ์ คำสั่งซื้อ ลูกค้า คูปอง และข้อมูลอื่น ๆ ที่จัดเก็บไว้ในฐานข้อมูลของคุณ
การเปลี่ยนแปลงล่าสุดของ WooCommerce ที่เกี่ยวข้องกับ CRUD หมายความว่าแพลตฟอร์มกำลังจะขยายขนาดได้มากขึ้น หมายเหตุ: โพสต์นี้ใช้เทคนิคและถือว่าระดับความสะดวกสบายด้วยโค้ด PHP
ผู้เรียนเสียง? ประเด็นในโพสต์นี้มาจากการพูดคุยของฉันที่ WooConf 2017
WooCommerce ที่ปรับขนาดได้มากขึ้น
เพื่อให้นักพัฒนาของเราใช้ชีวิตได้ง่ายขึ้น เราได้เพิ่มวัตถุ CRUD พิเศษใน WooCommerce 3.0 สิ่งนี้จะแทนที่รหัสเมตาของโพสต์ก่อนหน้าทั้งหมดใน WooCommerce และต้องใช้โดยส่วนขยายทั้งหมดเพื่อเปิดใช้งานไซต์ WooCommerce เพื่อปรับขนาด
ในเวลาเดียวกัน เราได้เพิ่มชุดของออบเจ็กต์ที่เรียกว่า Data Stores ซึ่งออกแบบมาเพื่อโหลดและบันทึกข้อมูล WooCommerce ของคุณเข้าและออกจากฐานข้อมูล นามธรรมเหล่านี้ออกแบบมาเพื่อให้ WooCommerce จัดการกับคำสั่งซื้อ ผลิตภัณฑ์ และลูกค้าจำนวนมากขึ้น ทำได้โดยการเชื่อมต่อกับ WooCommerce เพื่อให้มันใช้วิธีการต่างๆ ในการจัดเก็บข้อมูล
การใช้งานที่เก็บข้อมูลแต่ละรายการจะกำหนดวิธีการจัดเก็บและดึงข้อมูล ไม่ว่าจะเป็นจากฐานข้อมูลหรือวิธีการจัดเก็บข้อมูลอื่นทั้งหมด เมื่อใช้สิ่งเหล่านี้ ตอนนี้สามารถขยาย WooCommerce ได้ถึงปริมาณการขายระดับองค์กร ด้วยการใช้งานที่สามารถจัดการคำสั่งซื้อนับล้านได้ ทั้งหมดที่ต้องทำคือเชื่อมต่อตัวกรองที่กำหนดสิ่งที่ WooCommerce ใช้ในการจัดเก็บข้อมูล
นอกเหนือจากการปรับปรุงประสิทธิภาพที่ CRUD และนามธรรมของการจัดเก็บข้อมูลสามารถให้ได้ โครงสร้างเหล่านี้ยังให้ความยืดหยุ่นมากขึ้นในการบันทึกและโหลดข้อมูลสำหรับร้านค้า WooCommerce ของคุณ สำหรับข้อมูล WooCommerce แต่ละประเภท (ผลิตภัณฑ์ คำสั่งซื้อ ลูกค้า ฯลฯ) ตอนนี้ คุณมีความสามารถในการตัดสินใจว่าข้อมูลนั้นควรมาจากที่ใดและควรไปที่ใด ซึ่งช่วยให้ผู้สร้างร้านค้าปรับแต่ง WooCommerce ให้ตรงกับความต้องการของพวกเขาโดยเชื่อมต่อกับระบบอื่นๆ หรืออัปเกรดประสิทธิภาพของส่วนต่างๆ ของ WooCommerce ตามความจำเป็น
นอกเหนือจากการปรับปรุงประสิทธิภาพที่ CRUD และนามธรรมของการจัดเก็บข้อมูลสามารถให้ได้ โครงสร้างเหล่านี้ยังให้ความยืดหยุ่นมากขึ้นในการบันทึกและโหลดข้อมูลสำหรับร้านค้า WooCommerce ของคุณ
หมายความว่าอย่างไร? ลองคิดถึงความเป็นไปได้:
- การบันทึกข้อมูลการสั่งซื้อในฐานข้อมูลแยกต่างหากจาก wpdb
- รับข้อมูลผลิตภัณฑ์จากฐานข้อมูลที่มีอยู่บนระบบอื่น
- การแชร์สินค้าคงคลังของผลิตภัณฑ์ในหลายไซต์ (ตัวอย่างด้านล่าง)
กำลังดึงข้อมูลผลิตภัณฑ์ผ่าน API จากแหล่งอื่น
การสร้างคำสั่ง CLI เพื่อโหลดจากที่เก็บข้อมูลหนึ่งและบันทึกไปยังอีกที่หนึ่ง (การนำเข้า/ส่งออกในตัว)
การขยายพื้นที่เก็บข้อมูล
ด้วย CRUD และการเก็บข้อมูลที่เป็นนามธรรม WooCommerce ไม่สนใจว่าข้อมูลมาจากไหนหรือจะบันทึกอย่างไร คุณสามารถควบคุมได้ด้วยตัวเองทั้งหมด
ในตัวอย่างด้านล่าง ฉันดึงข้อมูลจำนวนสินค้าคงคลังจากบริการแยกต่างหาก และมีการเปลี่ยนแปลงเฉพาะการนับสินค้าคงคลังของแต่ละออบเจ็กต์ผลิตภัณฑ์ ข้อดีอย่างหนึ่งของการทำเช่นนี้คือฉันสามารถมีไซต์ WooCommerce หลายไซต์ขายจากการนับสินค้าคงคลังเดียวกันได้ และต้องแน่ใจว่าฉันไม่ได้ขายหุ้นของฉันมากเกินไป
นี่คือจุดเริ่มต้น ตัวกรอง install_data_store
สำหรับการเก็บข้อมูลจริง มีสองอินเตอร์เฟสที่จะนำไปใช้: WC_Object_Data_Store_Interface
และ WC_Product_Data_Store_Interface
ที่เก็บข้อมูลนี้ออกแบบมาเพื่อเสริมการจัดเก็บข้อมูลที่มีอยู่ ใช้ที่เก็บข้อมูลที่มีอยู่ในตัวสร้างและปรับเปลี่ยนวิธีการจัดการสินค้าคงคลังเท่านั้น ทุกสิ่งทุกอย่างได้รับการจัดการตามปกติผ่านการจัดเก็บข้อมูลที่มีอยู่
สำหรับฟังก์ชันที่จำเป็นส่วนใหญ่ ที่เก็บข้อมูลนี้เพียงแค่เรียกที่เก็บข้อมูลพาเรนต์:
การเปลี่ยนแปลงเพียงอย่างเดียวที่เก็บข้อมูลนี้แนะนำคือวิธีการอ่านสินค้าคงคลัง ในกรณีนี้ จะอ่านจากที่เก็บข้อมูลหลักตามปกติ แต่จะแทนที่ปริมาณสต็อคก่อนส่งคืน:
ด้วย CRUD และการเก็บข้อมูลที่เป็นนามธรรม WooCommerce ไม่สนใจว่าข้อมูลมาจากไหนหรือจะบันทึกอย่างไร คุณสามารถควบคุมได้ด้วยตัวเองทั้งหมด
ปริมาณสต็อคด้านบนดึงมาจาก API ในแอปพลิเคชันในโลกแห่งความเป็นจริง การเรียก API นี้อาจไปที่ระบบควบคุมสินค้าคงคลัง หรือ POS หรือแม้แต่ไซต์ WooCommerce อื่น
รหัสที่สมบูรณ์สำหรับตัวอย่างข้างต้นมีอยู่ที่: https://github.com/coderkevin/woocommerce-product-inventory-datastore
ความเป็นไปได้ที่ไม่มีที่สิ้นสุดด้วยวัตถุ CRUD และการจัดเก็บข้อมูล
ดังที่แสดงในตัวอย่างข้างต้น ความเป็นไปได้ไม่มีที่สิ้นสุด WooCommerce 3.3 ซึ่งจะเปิดตัวในวันที่ 30 มกราคม มีเหตุการณ์สำคัญที่น่าตื่นเต้นเพิ่มเติมเกี่ยวกับ CRUD เพิ่มเติมได้ที่: WooCommerce 3.3 Webhooks CRUD ใหม่
ใช้จินตนาการของคุณเพื่อสร้างโซลูชันข้อมูลในรูปแบบใหม่และน่าสนใจด้วยวัตถุ CRUD และการจัดเก็บข้อมูล และอย่าลืมแจ้งให้เราทราบว่าคุณรู้สึกอย่างไรในความคิดเห็นหรือเข้าร่วมชุมชน WooCommerce Slack