Woocommerce Показать детали поставщика, такие как имя поставщика, имя магазина, контактные данные и адрес поставщика (Dokan), на странице сведений о заказе администратора

Мы хотим отображать название магазина, название поставщика и контактную информацию поставщика на странице сведений о заказе администратора заказа.

Я использую WooCommerce показать название магазина поставщика (Dokan) в обзоре сведений о заказе администратора, чтобы отобразить название магазина для каждый товар в счете-фактуре.

Теперь мы хотим отобразить имя поставщика и контактные данные поставщика.

Снимок экрана страницы заказа

Моя попытка:

// Adding Vendor Details admin shop_order pages
add_action( 'woocommerce_admin_order_data_after_billing_address', 'action_woocommerce_admin_order_data_after_billing_address', 10, 1 );
function action_woocommerce_admin_order_data_after_billing_address( $order ) {
    // Empty array
    $shop_names = array();

    // Output
    echo '<h4>' . __( 'Store Name: ', 'woocommerce' ) . '</h4>';
    
    // Loop through order items
    foreach ( $order->get_items() as $item ) {
        // Get product object
        $product = $item->get_product();
        
        // Author id
        $author_id = $product->post->post_author;
        
        // Shopname
        $vendor = dokan()->vendor->get( $author_id );
        $shop_name = $vendor->get_shop_name();
        
        // OR JUST USE THIS FOR SHOPNAME
        // Shop name
        // $shop_name = dokan()->vendor->get( $author_id )->get_shop_name();
        
        // NOT in array
        if ( ! in_array( $shop_name, $shop_names ) ) {
            // Push to array
            $shop_names[] = $shop_name;

            // Output
            echo '<p>' . $shop_name . '</p>';
        }
        
    }
    
        // Empty array
    $store_phones = array();
    
        // Output
    echo '<h4>' . __( 'Seller Contact: ', 'woocommerce' ) . '</h4>';
    
    // Loop through order items
    foreach ( $order->get_items() as $item ) {
        // Get product object
        $product = $item->get_product();
        
        // Author id
        $author_id = $product->post->post_author;
        
        // Shopname
        $vendor = dokan()->vendor->get( $author_id );
        
        $store_phone = $vendor->get_phone();
        
        // OR JUST USE THIS FOR SHOPNAME
        // Shop name
        // $store_phone = dokan()->vendor->get( $author_id )->get_store_phone();
        
        // NOT in array
        if ( ! in_array( $store_phone, $store_phones ) ) {
            // Push to array
            $store_phone[] = $store_phone;

            // Output
            echo '<p>' . $store_phone . '</p>';
        }
        
    }
}

Используя этот код, мы получили название магазина, но мы не можем получить имя поставщика и контактные данные поставщика.


person Aman Marghani    schedule 13.05.2021    source источник
comment
1) Если вы используете существующий код, всегда указывайте исходный код, потому что он дает правильный кредит автору. 2) Зачем вам использовать 2 цикла foreach (и замедлять работу), если вы можете сделать это ВСЕ с одним циклом?   -  person 7uc1f3r    schedule 16.05.2021


Ответы (1)


Ваша проблема в этом коде $store_phone[] = $store_phone; замените этим $store_phones[] = $store_phone;

// Adding Vendor Details admin shop_order pages
add_action( 'woocommerce_admin_order_data_after_billing_address', 'action_woocommerce_admin_order_data_after_billing_address', 10, 1 );
function action_woocommerce_admin_order_data_after_billing_address( $order ) {
    // Empty array
    $shop_names = array();

    // Output
    echo '<h4>' . __( 'Store Name: ', 'woocommerce' ) . '</h4>';
    
    // Loop through order items
    foreach ( $order->get_items() as $item ) {
        // Get product object
        $product = $item->get_product();
        
        // Author id
        $author_id = $product->post->post_author;
        
        // Shopname
        $vendor = dokan()->vendor->get( $author_id );
        $shop_name = $vendor->get_shop_name();
        
        // OR JUST USE THIS FOR SHOPNAME
        // Shop name
        // $shop_name = dokan()->vendor->get( $author_id )->get_shop_name();
        
        // NOT in array
        if ( ! in_array( $shop_name, $shop_names ) ) {
            // Push to array
            $shop_names[] = $shop_name;

            // Output
            echo '<p>' . $shop_name . '</p>';
        }
        
    }
    
        // Empty array
    $store_phones = array();
    
        // Output
    echo '<h4>' . __( 'Seller Contact: ', 'woocommerce' ) . '</h4>';
    
    // Loop through order items
    foreach ( $order->get_items() as $item ) {
        // Get product object
        $product = $item->get_product();
        
        // Author id
        $author_id = $product->post->post_author;
        
        // Shopname
        $vendor = dokan()->vendor->get( $author_id );
        
        $store_phone = $vendor->get_phone();
        
        // OR JUST USE THIS FOR SHOPNAME
        // Shop name
        // $store_phone = dokan()->vendor->get( $author_id )->get_store_phone();
        
        // NOT in array
        if ( ! in_array( $store_phone, $store_phones ) ) {
            // Push to array
            $store_phones[] = $store_phone;

            // Output
            echo '<p>' . $store_phone . '</p>';
        }
        
    }
}

Проверено и работает

введите описание изображения здесь

person Bhautik    schedule 13.05.2021
comment
@ Аман Маргани Помогает ли мой ответ? - person Bhautik; 14.05.2021
comment
Да, это работает. Большое спасибо - person Aman Marghani; 14.05.2021