如何添加带有变体的 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 产品的更多信息,请查看本指南。
您是否在商店中创建了产品属性? 您使用了哪种方法? 在下面的评论中让我们知道!