將變體圖庫引入核心

Chair

WooCommerce1 核心又要加新功能了。之前靠 Additional Variation Images 擴展才能做的事,現在直接合並進核心,免費開箱即用。

從 WooCommerce 10.9 開始,可變產品裏的每個變體,除了原本那張特色圖像,還能擁有自己有序的圖像圖庫。

這步動作緊跟着 9.4 版本合併品牌功能,是“更多功能進核心”計劃的一部分——把基礎商務功能塞進核心,商家默認就能用,開發者專心做差異化。

包含哪些內容?

變體圖庫讓每個變體都能在前台展示自己的圖像。購物者選某個變體時,圖庫會切換顯示該變體的完整圖像集。

管理後台用一個統一字段集中管理每個變體的圖像:變體的特色圖像和圖庫以有序列表呈現,列表第一項自動提升為”主要”圖像。

啓用該功能

WooCommerce 10.9 加入了此功能,但初始階段對所有用户默認禁用。

要在商店裏啓用變體圖庫,勾選 設置 → 高級 → 功能 裏的 “變體圖庫” 複選框就行。

或者用編程方式,跑這條 WP-CLI4 命令:

wp option update wc_feature_woocommerce_additional_variation_images_enabled 'yes'

啓用後,獨立的 Additional Variation Images 擴展會自動停用,避免兩種實現方式打架。

功能分階段推出,留足時間測試、收集反饋、完成遷移,逐步淘汰現有的 Additional Variation Images 訂閲:

  • 10.9 版本提供功能供用户選擇測試,
  • 後續版本通過數據庫更新程序,為選定商店開啓 5% 的金絲雀測試,
  • 金絲雀測試通過後,全面啓用至 100%。

首次實現的重點關注

首次實現的範圍刻意控制得清晰明確:優先處理那些後期難改、容易出錯的部分。

清晰的遷移路徑。 當前跑着 Additional Variation Images 擴展的商店,不用手動幹預就能遷移到核心。想退回擴展,數據也不會丟。向後兼容。 舊元數據留在磁盤上,運行時回退機制能確保未遷移的變體正確渲染,受影響模板的主題覆蓋也能繼續工作。與擴展功能對等。 AVI6 插件能做的事,核心實現都能做。開箱即用的 REST API2 支持。 跟最初發布時沒有 REST 端點的品牌合併不同,變體圖庫從第一天起就通過 REST API 暴露(詳情見下文)。

所以,管理後台 UI7 的首次實現可能還有點粗糙。我們選擇先交付實質性的底層架構,在推出過程中迭代優化 UI,而不是因為重新設計而阻礙合併。

隨着功能在金絲雀測試階段推進,變體圖庫編輯器會迎來後續改進。

技術實現

變體圖庫存在 _product_image_gallery 裏——這是 WooCommerce 已經用於父級產品圖庫的同一個 postmeta 鍵。

我們努力確保圖庫從第一天起就通過 REST API 暴露。變體端點的 gallery_image_ids 屬性裏能找到它們,結構跟父級產品用的相同。

經典前台路徑和基於區塊的產品圖庫,內部都在用這個數據負載。

對於當前使用 Additional Variation Images 擴展的站點,存在 _wc_additional_variation_images 裏的舊數據,會在推出時遷移到規範位置。

舊元數據有意留在磁盤上,任何直接讀它的第三方代碼都能繼續工作。

遷移指南

當前用着 Additional Variation Images 擴展的站點,過渡路徑很平滑:啓用功能後,WooCommerce 在後台安排一個 Action5 Scheduler 任務,把舊圖庫數據複製到規範位置,每次跑 250 個變體,完成後自動重新排隊,直到全部完成。

遷移是冪等的,對已遷移的變體重新跑不會產生任何效果,因為有哨兵元數據兜底。不過,建議先在測試站點上試試。

_wc_additional_variation_images 直接交互的自定義代碼應該能繼續工作,因為舊元數據保留了。但任何向變體的 _product_image_gallery 寫數據的代碼,可能需要意識到核心現在會從裏面讀數據。

前台兼容性

變體圖庫支持經典的單產品模板和基於區塊的產品圖庫,能搭配多種不同組合,包括新舊區塊。

支持對 single-product/add-to-cart/variable.php 的主題覆蓋。

淘汰獨立擴展

獨立的 Additional Variation Images 擴展會在功能達到 100% 全面推出後,從 WooCommerce 市場 淘汰,策略跟淘汰品牌擴展時一樣。

具體來説:

當前已訂閲的商家不用做任何操作。 擴展持續工作,直到商店啓用核心功能。那時 WooCommerce 會自動停用獨立插件防止衝突。變體圖庫數據繼續渲染:數據一樣,只是現在由核心提供服務。活躍訂閲會被取消,當擴展從市場淘汰時。受影響的客户可以向支持團隊申請退款或信用額度。完整細節會在淘汰郵件裏發。受影響的商家會收到郵件通知,在關鍵推出里程碑(金絲雀測試和 100% 全面推出)時,包含説明和文檔鏈接。文檔正在遷移到核心。 現有的 Additional Variation Images 文檔會被重定向到核心產品文檔下的新變體圖庫文檔。

接近 100% 全面推出時,會通過單獨通知發佈更多細節——包括確切的淘汰日期、訂閲處理細節和文檔遷移。

如果你是 Additional Variation Images 的訂閲者,今天什麼都不用做;需要你操作時,我們會通過郵件聯繫你。

測試該功能

該功能會成為即將發佈的 WooCommerce 10.9 beta 的一部分,計劃 6 月 8 日發佈,通過上述代碼片段或 CLI 命令就能啓用。等不及的話,現在就能在 GitHub3 上的夜間構建版本 裏體驗。

強烈建議在測試環境裏測一下。

我們為此主題開了 GitHub 討論,期待聽聽你的使用體驗和反饋。

名詞解釋

  1. WooCommerce:WordPress 最流行的電子商務插件 ↩︎
  2. REST API:基於 HTTP 的應用程序接口 ↩︎
  3. GitHub:全球最大的代碼託管和協作開發平台 ↩︎
  4. WP-CLI:WordPress 的命令行管理工具 ↩︎
  5. Action:WordPress 鈎子類型之一,在特定位置執行代碼 ↩︎
  6. AVI:一種視頻文件格式 ↩︎
  7. UI:用户界面,用户與軟件交互的視覺部分 ↩︎

文章目錄



發表評論

發表回覆

您的郵箱地址不會被公開。 必填項已用 * 標註