php - 在 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,这个问题可能会影响许多其他用户,许多商店希望通过本地取货服务来提供他们的产品。非常感谢你,大卫
解决方案
我认为下面的代码可能对您有用,请记住您需要更改运输方式 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 可以在源代码附近找到
推荐阅读
- mongoose - 如何使用 Jest 在 NestJS 的提供者中模拟和监视“mongoose.connect”
- google-cloud-platform - Cron 作业中的请求方法
- r - R ggplot水平条形图与千数据
- c# - 当部署在 linux 服务器上时,mongodb 客户端连接在 .net 核心中需要 15 分钟,但在 Windows 服务器上部署时同样工作正常
- swift - [self] 如何在 Swift 上工作?它的工作方式类似于 [unowned self] 或强参考
- javascript - Javascript Vue:onFileChange(e)中的变量'e'来自哪里?
- python - AWS 获取 AWS 文本代码上的关键错误。我应该怎么办?
- orbeon - 以 orboen 形式在数据库中为 datepicker 存储禁用日期
- regex - 正则表达式从中获取价值
通过对值断言条件 - java - 我可以强制使用具有泛型但在方法定义类型中的方法参数吗?