如何添加帶有變體的 WooCommerce 產品屬性:2 種方法
已發表: 2021-05-25您想創建具有不同變體的產品屬性嗎? 你來對地方了。 在本指南中,我們將向您展示如何添加帶有變體的 WooCommerce 產品屬性。
什麼是 WooCommerce 屬性?
在 WooCommerce 中,您可以通過屬性向您的產品添加信息。 這些屬性取決於產品。 例如,服裝項目的常見屬性是尺寸和顏色,而對於筆記本電腦,它們可能是屏幕尺寸、RAM 和存儲容量。
屬性的有趣之處在於它們是全局的。 無需將它們應用於每個產品,您只需創建它們並將它們添加到不同的產品中。
屬性對於:
- 可變產品:在創建可變產品之前,您必須為它們定義屬性。 這允許您添加產品的變體。
- 過濾產品:一種常用的過濾方式是基於屬性。 例如,用戶可能正在尋找一台 15 英寸屏幕的筆記本電腦。
此外,您還可以創建默認產品屬性。 有關這方面的更多信息,請查看此完整指南。
現在我們對屬性有了更好的理解,讓我們看看如何在 WooCommerce 中添加具有變體的產品屬性。
如何添加帶有變體的 WooCommerce 產品屬性
在 WooCommerce 中添加具有變體的產品屬性有兩種主要方法:
- 從 WooCommerce 儀表板
- 以編程方式
讓我們看看這兩個選項。
1) 使用 WooCommerce 儀表板的變體創建產品屬性
在 WooCommerce 中添加屬性的最簡單方法是從屬性部分。 為此,在您的儀表板中,轉到產品 > 屬性。 在那裡,您必須選擇一個名稱和 slug,然後單擊“添加屬性”按鈕來創建一個新的產品屬性。
如前所述,屬性是全局的,因此新屬性將適用於您商店中的所有產品。
添加產品屬性後,您必須添加一些將成為某些產品的變體的術語。
例如,如果屬性是屏幕尺寸,則不同的尺寸(13 英寸、15 英寸、17 英寸)將是術語。
這樣,您可以組合每個產品的不同屬性並創建不同的變體。 例如,您可以獲得紅色 13 英寸筆記本電腦、藍色 15 英寸筆記本電腦等。
如您所見,從 WooCommerce 儀表板添加屬性和變體非常容易。 但是,如果您需要創建許多變體,則可能會很耗時。 要批量創建具有變化的屬性並管理大量屬性,您可以使用一些編碼。
讓我們看看如何以編程方式在 WooCommerce 中添加具有變體的產品屬性。
2.如何以編程方式創建具有變化的產品屬性
如果您具有編碼技能,則可以以編程方式添加產品屬性及其變體。 如果您想在創建屬性時節省時間,這是一個很好的選擇,因為您可以批量添加它們。
注意:由於我們將編輯一些核心文件,因此在開始之前,我們建議您:
- 創建站點的完整備份,以便在出現問題時恢復它
- 創建子主題:您可以安裝任何這些插件或查看本指南來創建一個。 這樣,當您將主題更新到新版本時,您的自定義設置不會丟失。
請注意,您應該將自定義代碼插入到子主題的functions.php文件中。
備份站點並創建子主題後,在 WordPress 儀表板中轉到外觀 > 自定義並在右側列中查找functions.php文件。 然後,將以下代碼粘貼到文件末尾。
完整的 PHP 腳本
這是完整的腳本,在下一節中,我們將把它分成幾部分並解釋每個部分的作用。
add_action('admin_init', 'QuadLayers_add_product_attributes'); 函數 QuadLayers_add_product_attributes(){ $atts=數組( '大小'=>數組('XL','小'), '顏色'=>數組('棕色','灰色','黃色'), ); foreach ($atts as $key => $values) { 新的 add_attribute($key,$values); } } 類添加屬性{ /* * 註冊一個全球 woocommerce 產品屬性類。 * * @param str $nam | 屬性名稱 * @param arr $vals | 變化的數組 * */ 公共函數 __construct($nam,$vals){ $attrs = 數組(); $attributes = wc_get_attribute_taxonomies(); foreach ($attributes as $key => $value) { array_push($attrs,$attributes[$key]->attribute_name); } 如果(!in_array($nam,$attrs)){ $args = 數組( 'id' => '', '蛞蝓' => $nam, '名稱' => __( $nam, 'woocommerce' ), '類型' => '選擇', 'orderby' => 'menu_order', 'has_archives' => 假, '限制' => 1, 'is_in_stock' => 1 ); 返回 wc_create_attribute( $args ); } $this->add_var($nam,$vals); } 公共函數 add_var($nam,$vals){ $taxonomy = 'pa_'.$nam; $term_slug = sanitize_title($nam); // 檢查術語是否存在,如果不存在,則創建它(並獲取術語 ID)。 for ($ff=0; $ff term_id; } } } }
值得注意的是,此腳本不會刪除任何現有屬性,它只會添加新屬性。 如果您嘗試添加的屬性已經存在,腳本將不會執行任何操作。
此外,請注意,對於此示例,我們添加了一些屬性和術語。 您需要編輯以下數組並創建自己的屬性。
函數 QuadLayers_add_product_attributes(){ $atts=數組( 'new-attribute'=>array('aside','beside','long','none','short'), );
之後前往管理儀表板中的產品 > 屬性。 如果一切順利,您將看到剛剛使用 PHP 腳本添加的屬性和術語。
如果您看不到變化,只需重新加載頁面以便它們可以填充。
最重要的是,這些屬性也可用於在產品編輯器頁面上設置產品變體:
就是這樣! 現在您可以簡單地編輯 PHP 腳本並添加您自己的 WooCommerce 產品屬性和變體。 您甚至可以通過應用條件邏輯來動態更新它。
腳本是如何工作的?
到目前為止,我們已經向您展示了一個腳本,用於將帶有變體的 WooCommerce 產品屬性添加到您的商店。 現在讓我們對其進行分解,以便您更好地了解它的工作原理並對其進行自定義。
腳本的主要部分是:
鉤子
add_action('admin_init', 'QuadLayers_add_product_attributes'); 函數 QuadLayers_add_product_attributes(){ $atts=數組( '大小'=>數組('XL','小'), '顏色'=>數組('棕色','灰色','黃色'), ); foreach ($atts as $key => $values) { 新的 add_attribute($key,$values); } }
我們使用admin_init()
掛鉤來啟動代碼。 你可以在這裡使用其他幾個鉤子,但在我們的例子中,我們喜歡使用這個的腳本的性能。
在掛鉤函數中,我們在單個多維數組中定義屬性值和變化。 foreach()
循環將為主數組的每個元素創建一個屬性。
在循環內部,屬性由我們的類add_attribute();
.
班上
我們創建了一個 OOP 類,它負責創建屬性並為其添加一些變體。 這是在每次實例化類時使用上一節中的new add_attribute()
進行的。
類添加屬性{ 公共函數 __construct($nam,$vals){ $attrs = 數組(); $attributes = wc_get_attribute_taxonomies(); foreach ($attributes as $key => $value) { array_push($attrs,$attributes[$key]->attribute_name); } 如果(!in_array($nam,$attrs)){ $args = 數組( 'id' => '', '蛞蝓' => $nam, '名稱' => __( $nam, 'woocommerce' ), '類型' => '選擇', 'orderby' => 'menu_order', 'has_archives' => 假, '限制' => 1, 'is_in_stock' => 1 ); 返回 wc_create_attribute( $args ); } $this->add_var($nam,$vals); }
第一個函數是一個construct()
,它使用wc_create_attribute()
WooCommerce 內置函數創建屬性,同時還調用第二個函數: add_var()
公共函數 add_var($nam,$vals){ $taxonomy = 'pa_'.$nam; $term_slug = sanitize_title($nam); // 檢查術語是否存在,如果不存在,則創建它(並獲取術語 ID)。 對於 ($ff=0; $ff < 計數($vals) ; $ff++) { if( ! term_exists( $vals[
$ff]
, $taxonomy ) ){ $term_data = wp_insert_term($vals[
$ff]
, $taxonomy ); $term_id = $term_data['term_id']; } else { $term_id = get_term_by( 'name', $vals[
$ff]
, $taxonomy )->term_id; } } }
第二個函數add_var()
將添加原始數組中包含的所有變體,用於它也通過函數傳遞的屬性。
結論
總之,產品屬性允許您創建可變產品並幫助用戶根據某些功能過濾產品。
在本指南中,我們看到了在 WooCommerce 中添加具有變體的產品屬性的兩種不同方法:
- 從管理儀表板
- 以編程方式
從 WooCommerce 儀表板創建屬性很容易。 但是,如果您需要為多個產品添加許多屬性,則可能會很耗時。
或者,如果您具有編碼技能,則可以以編程方式創建它們。 這是一種更高級的方法,允許您批量添加產品屬性。 我們在這篇文章中使用的腳本已經過全面測試並且可以正常工作,因此請隨意將其作為基礎並對其進行自定義。 但是,請記住,它旨在用於單個上傳屬性,我們不建議您將其永久部署到生產環境中。
如果您在嘗試運行腳本時遇到錯誤,請不要擔心。 這通常是因為您在屬性列表頁面上。 更新腳本的正確方法是重新加載 WordPress 管理儀表板的永久鏈接頁面。
有關如何以編程方式和從管理儀表板正確添加 WooCommerce 產品的更多信息,請查看本指南。
您是否在商店中創建了產品屬性? 您使用了哪種方法? 在下面的評論中讓我們知道!