Установите флажок «Доставить на другой адрес» для определенных продуктов в Woocommerce - PullRequest
0 голосов
/ 12 декабря 2018

Как сделать «Отправка по другому адресу» обязательным для определенных продуктов и отключить его для обычных продуктов?Я пытался использовать этот код, но он не работал для меня.

add_filter( 'woocommerce_available_payment_gateways', 'conditionally_disable_cod_payment_method', 10, 1);
function conditionally_disable_cod_payment_method( $gateways ){

    $products_ids = array(793, 796);

    foreach ( WC()->cart->get_cart() as $cart_item ){

        $product_id = version_compare( WC_VERSION, '3.0', '<' ) ? $cart_item['data']->id : $cart_item['data']->get_id();
        if (in_array( $cart_item['product_id'], $products_ids ) ){

            add_filter( 'woocommerce_ship_to_different_address_checked', '__return_true' );

        }
    }
    return $gateways;
}

1 Ответ

0 голосов
/ 12 декабря 2018

Попробуйте вместо этого:

add_filter( 'woocommerce_ship_to_different_address_checked', 'filter_cart_needs_shipping_address');
function filter_cart_needs_shipping_address( $checked ) {

    $products_ids = array(793, 796);
    $found = $others_found = false;

    foreach ( WC()->cart->get_cart() as $cart_item ){
        if (in_array( $cart_item['data']->get_id(), $products_ids ) ){
            $found = true;
        } else {
            $others_found = true;
        }
    }

    if( $found && ! $others_found )
        $checked = true;

    return $checked;
} 
...