WooCommerce에서 CRUD 데이터 저장소 확장
게시 됨: 2018-01-25CRUD에 대해 들어보셨나요? 프로그래밍에서 Create, Read, U pdate 및 Delete 는 우리 모두가 데이터로 수행하는 기본 작업을 나타냅니다. WooCommerce를 사용하면 데이터베이스에 저장된 제품, 주문, 고객, 쿠폰 및 기타 데이터가 포함됩니다.
CRUD와 관련된 WooCommerce의 최근 변경 사항은 플랫폼이 더 확장 가능해지고 있음을 의미합니다. 참고: 이 게시물은 기술적인 내용을 담고 있으며 PHP 코드에 대한 특정 편의 수준을 가정합니다.
오디오 학습자? 이 포스트의 요점은 WooConf 2017에서의 저의 강연입니다.
더 확장 가능한 WooCommerce
개발자의 삶을 더 쉽게 만들기 위해 WooCommerce 3.0에 특별한 CRUD 개체를 추가했습니다. 이것은 WooCommerce의 모든 이전 포스트 메타 코드를 대체하며 WooCommerce 사이트를 확장할 수 있도록 하려면 모든 확장 프로그램에서도 사용해야 합니다.
동시에 데이터베이스에 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 개체 및 데이터 저장소의 무한한 가능성
위의 예에서 알 수 있듯이 가능성은 무한합니다. 1월 30일 출시 예정인 WooCommerce 3.3에는 CRUD와 관련된 흥미로운 이정표가 포함되어 있습니다. 더 보기: WooCommerce 3.3 새로운 Webhooks CRUD.
상상력을 발휘하여 CRUD 개체 및 데이터 저장소를 사용하여 새롭고 흥미로운 방식으로 데이터 솔루션을 만들고 댓글이나 WooCommerce Slack 커뮤니티에 가입하여 어떻게 지내는지 알려주십시오.