Присвоить адрес доставки Dokan поставщику адресу магазина в Woocommerce - PullRequest
0 голосов
/ 04 декабря 2018

Я использую плагин Dokan и Woocommerce для моего WordPress сайта.

Я хочу, чтобы все поставщики отправляли свою продукцию на адрес магазина, а не на адрес клиента.После этого я хочу отправить товары из магазина по их адресу.

Но поставщикам всегда отображается адрес доставки, это адрес клиента, а не мой адрес.Я отключил доставку от поставщика в Докане, но адрес доставки по-прежнему является адресом клиента, а не моим.

Как изменить адрес доставки, отображаемый для поставщиков, на адрес моего магазина?Я проверил настройки Woocommerce и не нашел никакого решения.Должен ли я изменить некоторые коды или установить больше плагинов?

Большое спасибо

1 Ответ

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

Роль пользователя для поставщиков Dokan - это «поставщик», поэтому вы можете настроить таргетинг на эту роль пользователя и:

  • На страницах корзины и оформления заказа установить адрес доставки на базу магазина
  • По заказу отправьте сохранить как адрес доставки базу магазина

Код:

// Utility function that outputs the shop base address in an array
function get_shop_base_address() {
    $country_state = explode( ':', get_option( 'woocommerce_default_country' ) );

    return array(
        'address1'  => get_option( 'woocommerce_store_address' ),
        'address2' => get_option( 'woocommerce_store_address_2' ),
        'city'     => get_option( 'woocommerce_store_city' ),
        'postcode' => get_option( 'woocommerce_store_postcode' ),
        'state'    => $country_state[0],
        'country'  => isset($country_state[1]) ? $country_state[1] : '',
    );
}


// Set vendor shipping address to the shop base in Cart and checkout
add_action( 'template_redirect', 'set_vendor_shipping_address', 10 );
function set_vendor_shipping_address() {
    if( ( is_cart() || ( is_checkout() && ! is_wc_endpoint_url() ) )
    && current_user_can( 'vendor' ) ) {

        // Get shop base country/state
        $address = get_shop_base_address();

        // Set customer shipping
        WC()->customer->set_shipping_address_1( $address['address1'] );
        WC()->customer->set_shipping_address_2( $address['address2'] );
        WC()->customer->set_shipping_city( $address['city'] );
        WC()->customer->set_shipping_postcode( $address['postcode'] );
        WC()->customer->set_shipping_state( $address['state'] );
        WC()->customer->set_shipping_country( $address['country'] );
    }
}


// Save vendor order shipping address to the shop base
add_action( 'woocommerce_checkout_create_order', 'save_vendor_shipping_address', 10, 2 );
function save_vendor_shipping_address( $order, $data ) {
    if( current_user_can( 'vendor' ) ) {

        // Get shop base country/state
        $address = get_shop_base_address();

        // Set customer shipping
        $order->set_shipping_address_1( $address['address1'] );
        $order->set_shipping_address_2( $address['address2'] );
        $order->set_shipping_city( $address['city'] );
        $order->set_shipping_postcode( $address['postcode'] );
        $order->set_shipping_state( $address['state'] );
        $order->set_shipping_country( $address['country'] );
    }
}

Код находится в файле function.php вашей активной дочерней темы (или активной темы),Проверено и работает.

...