gpt4 book ai didi

wordpress - Woocommerce 使用产品 ID 获取供应商信息

转载 作者:行者123 更新时间:2023-12-04 01:39:54 28 4
gpt4 key购买 nike

我正在将 Woo Commerce 与 WC Vendor 和 WC Booking 插件一起使用。我想向供应商发送预订通知。目前它向客户和管理员发送通知,当管理员将产品状态更改为处理并完成时,它会向供应商发送通知。但是,我想发送供应商通知和管理员通知。

试过这个钩子(Hook):

add_action( 'woocommerce_new_booking', 'new_order_email_to_vendor', 10, 4 );
function new_order_email_to_vendor( $order ){

$emails = WC()->mailer()->get_emails();

if ( ! empty( $emails ) ) {
$emails['WC_Product_Vendors_Order_Email_To_Vendor']->trigger( $order );
}

}

但是它抛出一个错误:

Fatal error: Call to a member function get_date_created() on boolean in /wp-content/plugins/woocommerce-product-vendors/includes/emails/class-wc-product-vendors-order-email-to-vendor.php on line 56

因此,现在我正尝试在此中将供应商电子邮件与客户和管理员电子邮件直接 Hook :

$this->recipient     = $this->get_option( 'recipient', get_option( 'admin_email' ), 'WILL ADD VENDOR EMAIL HERE' );

文件中:

wp-content/plugins/woocommerce-bookings/includes/emails/class-wc-email-new-booking.php

在这个阶段,我有可用的可预订产品 ID,我正在尝试使用产品 ID 提取供应商信息,但我没有找到任何信息。

尝试过:

  • get_post()
  • get_post_meta()
  • get_post_meta_by_id()

问题是:如何使用产品 ID 获取供应商信息(特别是电子邮件)?

最佳答案

我没有也从未使用过 WC Vendors 插件,因为这是一个非官方的商业插件(不是自动制作的)。

要获取供应商 ID(稍作搜索后),您可以通过产品 ID 以这种方式获取它:

$vendor_id = get_post_field( 'post_author', $product_id );

现在您可以通过这种方式获取供应商电子邮件:

$vendor_id = get_post_field( 'post_author', $product_id );
$vendor = get_userdata( $vendor_id );
$email = $vendor->user_email;

可能是一个很好的转机:

您可以使用专用过滤器 Hook woocommerce_email_recipient_{$this->id} 其中 $this->id 是通知类型的 ID,对于 new_booking 电子邮件 ID(也用于测试 new_order 电子邮件 ID)。

这将允许您添加其他电子邮件收件人。

在电子邮件通知 Hook 中,几乎总是定义 Order 对象。由于在一个订单中您可以有很多商品(来自不同供应商的不同产品),因此您需要从每个商品中获取供应商 ID。

在下面的代码中,我将 new_bookingnew_order 电子邮件通知的供应商电子邮件添加到收件人:

add_filter( 'woocommerce_email_recipient_new_booking', 'additional_customer_email_recipient', 10, 2 ); 
add_filter( 'woocommerce_email_recipient_new_order', 'additional_customer_email_recipient', 10, 2 ); // Optional (testing)
function additional_customer_email_recipient( $recipient, $order ) {
if ( ! is_a( $order, 'WC_Order' ) ) return $recipient;

$additional_recipients = array(); // Initializing…

// Iterating though each order item
foreach( $order->get_items() as $item_id => $line_item ){
// Get the vendor ID
$vendor_id = get_post_field( 'post_author', $line_item->get_product_id());
$vendor = get_userdata( $vendor_id );
$email = $vendor->user_email;

// Avoiding duplicates (if many items with many emails)
// or an existing email in the recipient
if( ! in_array( $email, $additional_recipients ) && strpos( $recipient, $email ) === false )
$additional_recipients[] = $email;
}

// Convert the array in a coma separated string
$additional_recipients = implode( ',', $additional_recipients);

// If an additional recipient exist, we add it
if( count($additional_recipients) > 0 )
$recipient .= ','.$additional_recipients;

return $recipient;
}

代码进入您活跃的子主题(或主题)的 function.php 文件或任何插件文件。

这应该可以正常工作。

关于wordpress - Woocommerce 使用产品 ID 获取供应商信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47604737/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com