Php 在WooCommerce中更改自定义产品类型的订单发货地址
如果购物车具有与特定类型相同的产品类型,我希望设置一个替代地址Php 在WooCommerce中更改自定义产品类型的订单发货地址,php,wordpress,woocommerce,hook-woocommerce,orders,Php,Wordpress,Woocommerce,Hook Woocommerce,Orders,如果购物车具有与特定类型相同的产品类型,我希望设置一个替代地址 <?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
<?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\u checkout\u create\u 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文件。它应该可以工作。“谁能帮我使这个功能正常?”-错误日志,因为它可以告诉您实际的错误是什么。所以去看看吧。