【问题标题】:Change order shipping address for a custom product type in WooCommerce在 WooCommerce 中更改自定义产品类型的订单送货地址
【发布时间】:2020-12-04 12:50:14
【问题描述】:

如果购物车的产品类型与特定类型相同,我想设置一个替代地址。

<?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;
}
?>

但是在尝试下订单时,我收到内部服务器错误并且没有下订单。

我做错了什么?任何帮助表示赞赏。

【问题讨论】:

  • “谁能帮我实现这个功能?” - 错误日志,因为它可以告诉你实际错误是什么。所以去检查一下。

标签: php wordpress woocommerce hook-woocommerce orders


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-01
    • 2016-04-22
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 2019-03-31
    相关资源
    最近更新 更多