Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在WooCommerce中更改自定义产品类型的订单发货地址_Php_Wordpress_Woocommerce_Hook Woocommerce_Orders - Fatal编程技术网

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文件。它应该可以工作。

“谁能帮我使这个功能正常?”-错误日志,因为它可以告诉您实际的错误是什么。所以去看看吧。