मैं एक वैकल्पिक पता सेट करना चाहता हूं यदि कार्ट में एक उत्पाद प्रकार है जो एक विशिष्ट प्रकार के बराबर है।

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

लेकिन ऑर्डर देने का प्रयास करते समय, मुझे एक आंतरिक सर्वर त्रुटि मिलती है और ऑर्डर नहीं दिया जाता है।

क्या मैं गलत हूं? किसी भी मदद की सराहना की जाती है।

1
Jan Bloemkool 4 पद 2020, 15:50

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

कोड एक्टिव चाइल्ड थीम (या एक्टिव थीम) के फंक्शन्स.php फाइल में जाता है। यह काम करना चाहिए।

1
LoicTheAztec 4 पद 2020, 17:16