在 WooCommerce 中更改自定义产品类型的订单送货地址
Change order shipping address for a custom product type in WooCommerce
如果购物车的产品类型与特定类型相同,我想设置一个替代地址。
<?php
add_filter( 'woocommerce_checkout_create_order', 'mbm_alter_shipping', 10, 1 );
function mbm_alter_shipping ($order) {
global $woocommerce;
$items = $woocommerce->cart->get_cart();
foreach($items as $product => $values) {
$product->get_product();
if ($product->is_type('octopus')) {
$address = array(
'company' => 'Test',
'email' => 'test@test.com',
'phone' => '777-777-777-777',
'city' => 'London',
'state' => '',
'postcode' => '12345',
'country' => 'UK'
);
}
$order->set_address( $address, 'shipping' );
}
return $order;
}
?>
但是在尝试下订单时,出现内部服务器错误,无法下订单。
我做错了什么?感谢任何帮助。
woocommerce_checkout_create_order
是一个动作挂钩,您的代码已过时且错误百出……请尝试使用以下代码:
add_action( 'woocommerce_checkout_create_order', 'alter_order_shipping_address', 10, 2 );
function alter_order_shipping_address( $order, $data ) {
// Loop through cart items
foreach( WC()->cart->get_cart() as $cart_item ) {
// Targetting a custom product type
if ( $cart_item['data']->is_type('octopus') ) {
// Changing shipping address
$order->set_address( array(
'company' => 'Test',
'email' => 'test@test.com',
'phone' => '777-777-777-777',
'city' => 'London',
'state' => '',
'postcode' => '12345',
'country' => 'UK'
), 'shipping' );
break; // stop the loop
}
}
}
代码进入活动子主题(或活动主题)的 functions.php 文件。它应该有效。
如果购物车的产品类型与特定类型相同,我想设置一个替代地址。
<?php
add_filter( 'woocommerce_checkout_create_order', 'mbm_alter_shipping', 10, 1 );
function mbm_alter_shipping ($order) {
global $woocommerce;
$items = $woocommerce->cart->get_cart();
foreach($items as $product => $values) {
$product->get_product();
if ($product->is_type('octopus')) {
$address = array(
'company' => 'Test',
'email' => 'test@test.com',
'phone' => '777-777-777-777',
'city' => 'London',
'state' => '',
'postcode' => '12345',
'country' => 'UK'
);
}
$order->set_address( $address, 'shipping' );
}
return $order;
}
?>
但是在尝试下订单时,出现内部服务器错误,无法下订单。
我做错了什么?感谢任何帮助。
woocommerce_checkout_create_order
是一个动作挂钩,您的代码已过时且错误百出……请尝试使用以下代码:
add_action( 'woocommerce_checkout_create_order', 'alter_order_shipping_address', 10, 2 );
function alter_order_shipping_address( $order, $data ) {
// Loop through cart items
foreach( WC()->cart->get_cart() as $cart_item ) {
// Targetting a custom product type
if ( $cart_item['data']->is_type('octopus') ) {
// Changing shipping address
$order->set_address( array(
'company' => 'Test',
'email' => 'test@test.com',
'phone' => '777-777-777-777',
'city' => 'London',
'state' => '',
'postcode' => '12345',
'country' => 'UK'
), 'shipping' );
break; // stop the loop
}
}
}
代码进入活动子主题(或活动主题)的 functions.php 文件。它应该有效。