我在添加到购物车时遇到问题。我有不同定制条件的产品可供选择。当客户选择特定选项时。它会添加到购物车中。当客户选择另一个选项并添加。它显示为购物车中的第二个项目。这没关系。但在付款后,订单显示项目1和项目2下的自定义选项,但没有自定义数据。
所以我在想,与其把同一个产品展示成不同的商品。我想更新产品自定义数据,这样它将始终显示为单个项目。
(注意:我已经从管理员那里启用了"单独出售"选项,但它有效)
如果没有,你能告诉我如何在订单中正确显示吗,这样付款后发送的电子邮件,订单页面就会正确显示。
注意:我使用的自定义数据是位置和日期。
提前谢谢。
更新:
请参阅最近的相关问题(实际工作示例):
- 向订单项详细信息添加用户自定义字段值
- 将自定义产品数据动态添加为订单上的项目元数据
因此,您需要首先根据订单项目中的显示值设置产品属性,以获得该值的干净显示标签。然后,您必须将这些属性与相关产品中的任何值进行设置(这些强制属性值将被您的海关值所取代。
因此,如果您的属性Name是"Primary choice"(例如),您将在中设置pa_primary-choice
wc_add_order_item_meta($item_id, 'pa_primary-choice', $custom_field_value, true);
然后,您将在订单中获得产品标题项下的详细信息,标签名称和您的自定义字段值(此处"XXXX"是您显示的自定义字段的值):
Primary choice: XXXX
很抱歉,因为你的问题不是很清楚,也不是很详细,也没有你正在使用的任何代码。我想您谈论的是为可变产品设置的产品自定义字段,这些字段反映在购物车对象项目上。
您可能需要一些额外的代码来将这些信息添加为元数据,以便将其视为订单的一部分。您可以尝试以下操作,根据数据在产品页面、购物车和结账时提交的方式调整代码…
add_action('woocommerce_add_order_item_meta','add_custom_values_to_order_item_meta', 1, 3 );
function add_custom_values_to_order_item_meta( $item_id, $values, $cart_item_key ) {
$custom_field1 = $_POST['my_custom_field1_key'];
// or $values['my_custom_field1_key'];
$custom_field2 = $_POST['my_custom_field2_key'];
// or $values['my_custom_field2_key'];
if ( !empty($custom field1) )
wc_add_order_item_meta($item_id, 'custom_meta_key1', $custom_field1, true);
if ( !empty($custom field2) )
wc_add_order_item_meta($item_id, 'custom_meta_key2', $custom_field2, true);
// And so on …
}
对于产品变体,这更为复杂,如果你想为每一项都做一些干净的东西,我指的是一个带有自定义字段值的标题。就目前而言,在你的问题中提供的信息和使用的代码不可能帮助你更多…
代码位于活动子主题(或主题)的function.php文件中,也可以位于任何插件文件中
对于"单独销售">,您可以使用woocommerce_is_sold_individually
挂钩来删除产品的数量前端设置:
add_filter( 'woocommerce_is_sold_individually', '__return_true' );
代码位于活动子主题(或主题)的function.php文件中,也可以位于任何插件文件中