首页 > 解决方案 > 在 WooCommerce 中选择本地取货方式时显示商店位置

问题描述

我是简码和编程新手...我想知道在选择本地取货时如何使用 Dokan 插件在多供应商站点中显示商店位置。我认为 Dokan 插件不会修改或管理订单、结帐、订单确认和电子邮件,所以这个问题与 WooCommerce 的工作方式有关。如您所知,Woocommerce 默认显示方法名称,在本例中为本地取货,但不显示商店地址。我想拥有这个功能,并在订单、结账、电子邮件和发票中显示这些有价值的信息。我找到了以下代码,但在每个订单行中显示了我想要的内容,我想显示并集成为本地取货方法描述:

add_action( 'woocommerce_add_order_item_meta', 'dp_add_vendor_to_order_item_meta', 10, 2);
function dp_add_vendor_to_order_item_meta( $item_id, $cart_item) {      
        $vendor_id = $cart_item[ 'data' ]->post->post_author;
// build up address 
        $address1           = get_user_meta( $vendor_id , 'billing_address_1', true );
        $address2           = get_user_meta( $vendor_id , 'billing_address_2', true );
        $city               = get_user_meta( $vendor_id , 'billing_city', true ); 
        $store_postcode     = get_user_meta( $vendor_id , 'billing_postcode', true ); 
        $state              = get_user_meta( $vendor_id , 'billing_state', true ); 
        $address            = ( $address1 != '') ? $address1 .', ' . $city .', ' . $state.', '. $store_postcode :''; 
    
    wc_add_order_item_meta( $item_id, apply_filters('vendors_sold_by_in_email', __('Recoger en', 'vendors')), $address);
}
add_action( 'woocommerce_add_order_item_meta', 'email_add_vendor_to_order_item_meta', 10, 3);
function email_add_vendor_to_order_item_meta( $item_id, $cart_item) {       
       $vendor_id       = $cart_item[ 'data' ]->post->post_author;
       $email_vendor    = get_userdata( $vendor_id )->user_email;
    
    wc_add_order_item_meta( $item_id, apply_filters('vendors_sold_by_in_email', __('Email', 'vendors')), $email_vendor);
}

有人可以帮我解决这个问题吗?我认为由于 Covid-19,这个问题可能会影响许多其他用户,许多商店希望通过本地取货服务来提供他们的产品。非常感谢你,大卫

标签: phpwoocommerce

解决方案


我认为下面的代码可能对您有用,请记住您需要更改运输方式 ID 以与您的运输方式相对应

https://gist.github.com/drivenfaroff/86377bd208ab40e2a370185c47db8f5b

<?php

add_action( 'woocommerce_email_before_order_table', 'add_order_email_instructions', 10, 2 );

function add_order_email_instructions( $order, $sent_to_admin ) {

    $shipping_method = @array_shift( $order->get_shipping_methods() );
    $shipping_method_id = $shipping_method['method_id'];

    if ( ! $sent_to_admin ) {
        if ( 'local_pickup:5' == $shipping_method_id ) {
            // local pickup option
            echo '<p><strong>Instructions:</strong> Please contact us at 000-000-000 to arrange a pick-up time.</p>';
        } else {
            // other methods
            echo '';
        }
    }
}

?>

编辑:根据下面的评论,一些关于如何找到您的运输 ID 的额外信息

资料来源:https ://www.bolderelements.net/support/knowledgebase/finding-the-shipping-options-id/

在 Google Chrome 中使用开发者工具可以让您查看特定的代码源,这也可以显示选项的 ID。当您需要的选项可用时,右键单击结帐页面的“运输”框。选项 ID 可以在源代码附近找到 在此处输入图像描述


推荐阅读