关于WooCommerce。我有我要添加到购物车的自定义数据。在functions.php文件中,我有以下功能。
// Display cart item custom data in cart and checkout pages
add_filter( 'woocommerce_get_item_data', 'display_cart_item_custom_on_cart_and_checkout', 10, 2 );
function display_cart_item_custom_on_cart_and_checkout( $cart_item_data, $cart_item ){
if( isset($cart_item['custom_data']['label0']) && isset($cart_item['custom_data']['value0']) ) {
$cart_item_data[] = array(
'name' => $cart_item['custom_data']['label0'],
'value' => $cart_item['custom_data']['value0'],
);
}
if( isset($cart_item['custom_data']['label']) && isset($cart_item['custom_data']['value']) ) {
$cart_item_data[] = array(
'name' => $cart_item['custom_data']['label'],
'value' => $cart_item['custom_data']['value'],
);
}
if( isset($cart_item['custom_data']['label2']) && isset($cart_item['custom_data']['value2']) ) {
$cart_item_data[] = array(
'name' => $cart_item['custom_data']['label2'],
'value' => $cart_item['custom_data']['value2'],
);
}
if( isset($cart_item['custom_data']['label3']) && isset($cart_item['custom_data']['value3']) ) {
$cart_item_data[] = array(
'name' => $cart_item['custom_data']['label3'],
'value' => $cart_item['custom_data']['value3'],
);
}
if( isset($cart_item['custom_data']['label4']) && isset($cart_item['custom_data']['value4']) ) {
$cart_item_data[] = array(
'name' => $cart_item['custom_data']['label4'],
'value' => $cart_item['custom_data']['value4'],
);
}
if( isset($cart_item['custom_data']['label5']) && isset($cart_item['custom_data']['value5']) ) {
$cart_item_data[] = array(
'name' => $cart_item['custom_data']['label5'],
'value' => $cart_item['custom_data']['value5'],
);
}
if( isset($cart_item['custom_data']['label6']) && isset($cart_item['custom_data']['value6']) ) {
$cart_item_data[] = array(
'name' => $cart_item['custom_data']['label6'],
'value' => $cart_item['custom_data']['value6'],
);
}
if( isset($cart_item['custom_data']['label7']) && isset($cart_item['custom_data']['value7']) ) {
$cart_item_data[] = array(
'name' => $cart_item['custom_data']['label7'],
'value' => $cart_item['custom_data']['value7'],
);
}
if( isset($cart_item['custom_data']['label8']) && isset($cart_item['custom_data']['value8']) ) {
$cart_item_data[] = array(
'name' => $cart_item['custom_data']['label8'],
'value' => $cart_item['custom_data']['value8'],
);
}
if( isset($cart_item['custom_data']['label9']) && isset($cart_item['custom_data']['value9']) ) {
$cart_item_data[] = array(
'name' => $cart_item['custom_data']['label9'],
'value' => $cart_item['custom_data']['value9'],
);
}
if( isset($cart_item['custom_data']['label10']) && isset($cart_item['custom_data']['value10']) ) {
$cart_item_data[] = array(
'name' => $cart_item['custom_data']['label10'],
'value' => $cart_item['custom_data']['value10'],
);
}
return $cart_item_data;
}
这是可行的,自定义数据显示在购物车中。但是,定制数据不会显示在订单和订单电子邮件上。我在Stackoverflow上看到了一些解决这个问题的答案,但我无法让它们适用于我的情况。我提到的解决方案是。
在Woocommerce中保存和显示订单项自定义元数据
显示和保存添加的自定义购物车项目数据在WooCommerce购物车,结账和订单
有人能告诉我“我的”功能应该是什么吗?
非常感谢。
首先,您可以通过以下方式优化和压缩函数:
// Display cart item custom data in cart and checkout pages
add_filter( 'woocommerce_get_item_data', 'display_cart_item_custom_on_cart_and_checkout', 10, 2 );
function display_cart_item_custom_on_cart_and_checkout( $cart_item_data, $cart_item ){
$keys = array('0','','2','3','4','5','6','7','8','9','10'); // Fields numbers part keys array
// Loop through Fields numbers part keys array
foreach( $keys as $key ) {
if( isset($cart_item['custom_data']['label'.$key]) && isset($cart_item['custom_data']['value'.$key]) ) {
$cart_item_data[] = array(
'name' => $cart_item['custom_data']['label'.$key],
'value' => $cart_item['custom_data']['value'.$key],
);
}
}
return $cart_item_data;
}
然后,要将所有自定义购物车项目数据保存为自定义订单项目元数据,并将其显示在订单和电子邮件的任何地方,请使用以下方法:
// Save cart item custom data as order item meta data and display it everywhere in Orders and email notifications
add_action('woocommerce_checkout_create_order_line_item', 'save_as_custom_order_item_meta_data', 10, 4 );
function save_as_custom_order_item_meta_data( $item, $cart_item_key, $values, $order ) {
$keys = array('0','','2','3','4','5','6','7','8','9','10'); // Fields numbers part keys array()
// Loop through Fields numbers part keys array
foreach( $keys as $key ) {
if( isset( $values['custom_data']['label'.$key] ) && isset( $values['custom_data']['value'.$key] ) ) {
$item->update_meta_data( $values['custom_data']['label'.$key], $values['custom_data']['value'.$key] );
}
}
}
代码functions.php活动子主题(或活动主题)的文件中。它应该工作。
我有一个定制的WooCommerce产品类型称为彩票。我需要一个自定义选择字段(因为它不是一个可变产品),所以我添加了一个。 一切都很好,我在购物车和结帐中也获得了价值,但我无法在管理员订单或订单邮件(客户和管理员)中获得价值。 下面是我在函数中添加的代码。php。我做错了什么?
在woocommerce单页产品上,我创建了一个自定义字段。我希望它的值在订单生效时存储在订单元中。经过几个小时的研究,我还没有找到任何解决办法来结束!但我相信我已经很接近了。。。 这是我的实际代码: 以下是我目前掌握的情况: 这就是我想要的: 如何将此自定义字段数据保存为订单元数据,以便在“自定义字段”元框中显示值。 任何帮助都很感激。
好的,基本上我们在我们的WooCommerce商店中使用ACF创建了一个自定义字段,以便为特定的产品添加一个“发货延迟”通知。
我有一个WooCommerce订单的自定义元数据,现在我想在结账后在感谢页面上显示它,但是,数据不可用。数据保存在管理员中,我似乎无法访问它。 但是当我转储时,我的元数据不存在。 我正在使用; 保存数据,但转储
在该商业商店订购特定产品时,将向订单添加两个元值。 存储元值的两个字段位于 元键是: 我希望在下新订单时以编程方式创建一个新的自定义字段,并将此新字段的值设置为,前提是已订购的产品存在元键assemblycost。 经过一些研究,我发现是一个钩子,在订单保存到数据库并更新元数据后执行。所以这似乎是我应该使用的钩子。 参考:为Woocommerce中的订单添加额外的元数据: 我尝试在函数中添加以下代