• Resolved domanvi

    (@domanvi)


    Добрый день!
    Подскажите, можно ли как-то сделать, что бы данные о доставке(город и отделение) сразу указывались(передавались) в графы “Доставка” Например: Отделение – Адрес, Город-Город!?
    Скриншот – https://prnt.sc/1361a0s

Viewing 9 replies - 1 through 9 (of 9 total)
  • Thread Starter domanvi

    (@domanvi)

    Ну или сделать дублированное заполнение строк в графе “Доставка”??:
    Город – id=”_shipping_city”
    Отделение – id=”_shipping_address_1″

    • This reply was modified 3 years, 9 months ago by domanvi.
    • This reply was modified 3 years, 9 months ago by domanvi.
    Plugin Author Max

    (@wppunk)

    В плагине мы не будет это реализовывать потому что это усложнит логику работы плагина. Но я подготовил сниппет, который вы можете добавить в functions.php вашей темы, чтобы реализовать такую связь. В случае, если поля города и аддресса доставки не заполнены, то мы пробуем подставить данные из нашего плагина НП:

    
    add_filter( 'woocommerce_get_order_address', 'np_woocommerce_get_order_address', 10, 3 );
    function np_woocommerce_get_order_address( $address, $type, $order ) {
    
    	if ( $type !== 'shipping' ) {
    		return $address;
    	}
    
    	if ( ! empty( $address['city'] ) || ! empty( $address['address_1'] ) ) {
    		return $address;
    	}
    
    	$shipping_methods = $order->get_shipping_methods();
    	$shipping_method  = array_shift( $shipping_methods );
    
    	if ( 'shipping_nova_poshta_for_woocommerce' !== $shipping_method->get_method_id() ) {
    		return $address;
    	}
    
    	$city_id      = $shipping_method->get_meta( 'city_id' );
    	$warehouse_id = $shipping_method->get_meta( 'warehouse_id' );
    
    	if ( empty( $city_id ) || empty( $warehouse_id ) ) {
    		return $address;
    	}
    
    	$db                   = nova_poshta()->make( 'DB' );
    	$address['city']      = $db->city( $city_id );
    	$address['address_1'] = $db->warehouse( $warehouse_id );
    	$order->set_shipping_city( $address['city'] );
    	$order->set_shipping_address_1( $address['address_1'] );
    
    	return $address;
    }
    
    Thread Starter domanvi

    (@domanvi)

    Спасибо за сниппет, проверим!
    Еще вопрос.
    После выбора города сразу выставляется отделение по умолчанию https://prnt.sc/136tlvp. Это сбивает с толку многих клиентов, уже были не раз вопросы.
    Можно сделать чтобы оставалась надпись “Выберите отделение” ?

    • This reply was modified 3 years, 9 months ago by domanvi.
    • This reply was modified 3 years, 9 months ago by domanvi.
    • This reply was modified 3 years, 9 months ago by domanvi.
    Thread Starter domanvi

    (@domanvi)

    Касаемо сниппета, работает, но…
    Данные передаются в нужные строки, но на почту после оформления заказа приходит уведомление об ошибке https://prnt.sc/136umhs

    строка 198 – https://prnt.sc/136v2xn

    • This reply was modified 3 years, 9 months ago by domanvi.
    Thread Starter domanvi

    (@domanvi)

    Судя по всему была ошибка записи https://prnt.sc/137huez
    Поменяли местами – пока все ОК

    add_filter( 'woocommerce_get_order_address', 'np_woocommerce_get_order_address', 10, 3 );
    function np_woocommerce_get_order_address( $address, $type, $order ) {
    
    	if ( $type !== 'shipping' ) {
    		return $address;
    	}
    
    	if ( ! empty( $address['city'] ) || ! empty( $address['address_1'] ) ) {
    		return $address;
    	}
        $shipping_methods = $order->get_shipping_methods();
    	$shipping_method  = array_shift( $shipping_methods );
    
    	if ( $shipping_method->get_method_id() !== 'shipping_nova_poshta_for_woocommerce' ) {
    		return $address;
    	}
    	$city_id      = $shipping_method->get_meta( 'city_id' );
    	$warehouse_id = $shipping_method->get_meta( 'warehouse_id' );
    
    	if ( empty( $city_id ) || empty( $warehouse_id ) ) {
    		return $address;
    	}
    
    	$db                   = nova_poshta()->make( 'DB' );
    	$address['city']      = $db->city( $city_id );
    	$address['address_1'] = $db->warehouse( $warehouse_id );
    	$order->set_shipping_city( $address['city'] );
    	$order->set_shipping_address_1( $address['address_1'] );
    
    	return $address;
    }

    Вопрос по автозаполнению отделения, еще открыт.
    Если не сложно, дайте ответ.

    • This reply was modified 3 years, 9 months ago by domanvi.
    Plugin Author Max

    (@wppunk)

    @domanvi по умолчанию у нас поля пустые, но если пользователь авторизирован, то у него подтягивается его данные в эти поля, если он уже оформлял заказ. По умолчанию пользователь видет placeholder: https://a.supportally.com/yNC4dM

    Thread Starter domanvi

    (@domanvi)

    Так выглядят поля до ввода https://prnt.sc/1397bdb
    А так, когда указал город https://prnt.sc/1397dkh
    То есть, после ввода города исчезает надпись “Выберите отделение” и автоматически устанавливается отделение, первое по списку. Это сильно сбивает с толку клиента и многие на этом этапе просто сваливают…

    Thread Starter domanvi

    (@domanvi)

    Нашли еще одну проблему после добавления Вашего сниппета.
    Все заказы в админке со статусом “Отменен” и “Не удался” или не имеющие данных доставки ,выдают ошибку – https://prnt.sc/13aqegs
    Так же перестал работать быстрый просмотр заказа – https://prnt.sc/13aqghf

    Но самая главная проблема – перестала работать кнопка “быстрый заказ” на сайте.

    Надеемся на Вашу помощь в решении вопроса.

    • This reply was modified 3 years, 9 months ago by domanvi.
    • This reply was modified 3 years, 9 months ago by domanvi.
    Plugin Author Max

    (@wppunk)

    @domanvi Еще актуально?

Viewing 9 replies - 1 through 9 (of 9 total)
  • The topic ‘Информация о доставке в графе “Доставка”’ is closed to new replies.