Woocommerce 获取带有产品 ID 的供应商信息

2023-12-04

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

I tried这个钩子:

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

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

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

in file:

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

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

I tried:

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

The 问题是:如何使用产品 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;

也许是一个好的转机:

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

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

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

在下面的代码中,我将供应商电子邮件的收件人添加到new_booking and new_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 文件中或任何插件文件中。

这应该可以正常工作,不会出现错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Woocommerce 获取带有产品 ID 的供应商信息 的相关文章

  • WooCommerce 添加到购物车后停止重定向

    我希望在用户单击 添加到购物车 按钮后完全删除任何重定向 实际上我没有使用产品页面 我使用一个带有产品链接的简单按钮 如下所示 add to cart 492 我的用户将单击我页面上的多个 添加到购物车 按钮 因此在单击第一个按钮后他无法重
  • 删除页面上的 Yoast WordPress SEO

    我正在尝试删除某个页面上的 Yoast WordPress SEO 因为它与另一个插件冲突 我尝试将下面的代码添加到我的functions php中 但它似乎不起作用 感谢任何帮助 谢谢 function remove wpseo if i
  • AH00124:由于可能的原因,请求超出了 10 个内部重定向的限制

    升级我的 Ubuntu 服务器后 我尝试打开我的 WordPress 网站 我在 error log 中收到此错误 AH00124 由于可能的配置错误 请求超出了 10 个内部重定向的限制 如有必要 请使用 LimitInternalRec
  • wordpressfunctions.php - 为每个帖子类别使用不同的页面模板

    我想连接到 save post 函数 找出帖子所属的类别 然后为每个类别中的帖子分配不同的页面模板 我已经尝试了大约 30 个不同的版本 但都没有成功 有人可以帮我指出正确的方向吗 add action save post assign c
  • 向 WordPress 添加全局设置(功能切换)

    我有一个使用定制主题的 WordPress 网站 我想在管理中的某个位置添加一个功能切换 复选框设置 各个主题页面可以读取该功能切换以更改其行为 实现这一点的最佳方法是什么 如果您能包括我如何阅读该设置 我将不胜感激 Use the 主题定
  • 如何使 WooCommerce 3.0 Single Image Gallery 像 2.x 版本一样?

    如果您更新到 WooCommerce 3 0 并且您的主题尚未更新 如何使 WooCommerce 3 0 单一产品图片库像以前的版本一样工作 对于不复制模板文件并使用条件 挂钩和过滤器进行修改以避免许多问题的主题来说 这是一个问题 要添加
  • 获取客户在 WooCommerce 中最后订单的产品

    我想获取客户最近一次购买的产品数据或最近一次购买的产品数据 目前我有这个 但数组的结果给了我随机购买的结果 它甚至没有给我已完成购买的数据 它为我提供了暂停购买的详细信息 我在这里需要一些帮助 这是代码 Get the current us
  • 获取 Woocommerce 单一产品页面中的产品类别名称和描述

    我一直在使用 WooCommerce Codex 但我似乎无法显示数据 我只想显示产品类别和描述 以在我自己的自定义布局的单个产品页面上显示 如下所示 由于一个产品可以有多个产品类别 因此您需要使用 foreach 循环 这 term变量是
  • 如何在Wordpress的发布框内的编辑帖子页面中添加字段?

    我想在添加 编辑帖子页面的发布块内添加一个新的复选框字段 有人知道该怎么做吗 我终于找到了解决方案 我希望它对某人有用 add action post submitbox misc actions publish in frontpage
  • 为什么我需要在 single.php 中使用 wp 循环

    在WordPress主题开发中我们可以使用single php显示具体的单个帖子 为此 通常的做法是 为什么我需要循环显示单个帖子 任何人都可以给出一些合理的理由吗 这是困扰我多年的事情 我找到了答案 不 您不需要在单页中使用 LOOP 您
  • 在 Woocommerce 中添加并保存管理产品变体自定义字段

    因此 我有以下代码 使我可以将条形码字段添加到产品的库存选项中 现在我还想将其添加到每个变体中 以便当我通过 WooCommerce 销售点插件扫描产品的条形码时可以轻松添加变体产品 这是我目前得到的 Add Barcode field i
  • 如何在 WooCommerce 中的产品结构化数据 (Schema.org) 中添加产品图像和描述

    我使用它向每个产品的架构添加自定义字段 add filter woocommerce structured data product function markup product if is product markup brand ge
  • WordPress 简码传递值数组

    我正在创建一些 WordPress 短代码 旨在在页面上提供内部导航 一个页面包含很多内容部分及其自己的菜单 这就是我所拥有的 menu function internal menu atts extract shortcode atts
  • @Font-face 不适用于 IOS

    我正在开发一个 WordPress 网站 并且在每个页面上都有一个 H1 标签作为该页面的标题 我正在使用 font face 的特殊字体 它在每个浏览器的 Windows 上都运行良好 但是当我切换到 Mac 时 它不会显示 h1 标签
  • WooCommerce 使用 AJAX 设置购物车数量?

    我已经为此绞尽脑汁好几天了 需要一些指导 我正在为 WooCommerce 网站完全从头开始制作自定义主题 现在我正在尝试让购物车功能正常工作 我一直试图使用按钮 来更新购物车中产品的数量 对我来说问题似乎是WC 我在functions p
  • 在字符串中间添加一个字符

    可能有一个简单的解决方案可以解决这个问题 但会引起面部表情 我将时间存储为 4 个字符长的字符串 即 1300 我试图将该字符串显示为 13 00 我觉得必须有一个比我现在正在做的更优雅的解决方案 我目前有 startTime get fi
  • Woocommerce - 正在销售的产品显示 1 页而不是 4 页

    我有 44 种产品在售 当我输入 WooCommerce 短代码时 sale products per page 12 我只收到 12 件促销产品 即 1 页而不是 4 页 怎么了 我在用着 可湿性粉剂 4 4 1 WC 2 5 1 神秘的
  • 如何按日期对包含通过合并 get_posts 结果创建的 WP po​​st 对象的数组进行排序?

    我想通过合并 2 个单独的帖子的结果来创建单个帖子数组get posts查询 并按发布日期对数组进行排序 在我下面的代码中 get posts 为 args b and args a已合并为一个数组 但它们是分开的 的 9 个标题 args
  • 在 WooCommerce 管理订单项目上显示产品自定义字段(也适用于可变产品)

    基于在 WooCommerce 的订单编辑页面上显示自定义字段 https stackoverflow com questions 56259910 show custom fields on the order editing page
  • WordPress 中的 add_action 函数

    嗯 我正在学习创建一个 WordPress 插件 我下载了一个并阅读了代码 然后我看到了这个 我假设 foo 是它将添加操作的标签 但是 array 到底是做什么的呢 add action foo array foo1 foo2 我在看ht

随机推荐