【发布时间】:2015-11-09 23:22:02
【问题描述】:
对以下问题表示歉意,因为我的 PHP 知识不是很强,但是在 google 下,我似乎无法找到解决方案,或者无法解释如何完成此操作
我在 Wordpress 中有一个带有 WooCommerce 的自定义函数,它会在订单完成时触发。
我们的想法是每件商品都有一个供应商自定义字段和一个供应商电子邮件地址,在完成订单后,我们希望向该供应商发送一封电子邮件,要求他们将这些商品直接运送给客户.
下面是我目前的代码
$order = new WC_Order( $order_id );
$items = $order->get_items();
$address = $order->get_formatted_shipping_address();
$totalprice;
$str = "";
foreach ( $items as $item ) {
$supplier = get_post_meta( $item['product_id'], 'Supplier', true );
$supplier_email = get_post_meta( $item['product_id'], 'Supplier_Email', true );
$str .= $product_name = $item['name']." ";
$str .= $product_id = $item['product_id']." ";
$pprice = $item['price'];
$name = $item['name'];
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$to = array("$supplier <$supplier_email>");
$subject = "Please dispatch" + $name;
$content = "Please send the following item \n".$str;
$status = wp_mail($to, $subject, $content, $headers);
}
但是,如果我们说 4 件商品,其中 1 件是“供应商 X”,3 件来自“供应商 Y”,那么这可行,我们将向供应商 X 发送 3 封单独的电子邮件,而不是一封电子邮件,其中列出了所有项目。
我在想我需要从这个 foreach 中获取每个 $supplier_email 到它自己的数组中 - 然后以这种方式发送一封电子邮件?但到目前为止我似乎无法让它工作,有人可以帮忙吗?
谢谢!
【问题讨论】:
-
这有点模糊,但也许将供应商 ID 添加到您的 foreach 中的数组中是一个想法。然后在开始时检查当前的供应商 ID 是否已经在数组中。
-
只需先对特定订单的商品进行循环,然后创建一个额外的数组,将供应商 ID 存储为数组的键,并在其中存储一个包含所有商品的数组。然后,您可以循环该数组,并通过一封电子邮件以及其中的所有项目很好地将电子邮件发送给每个供应商。
-
Bart 提到的基本相同 :) 只需要 ID 检查。你可以简单地这样做:
$array[$suplier_id]['items][] = array() -
感谢您提供的信息,您能否提供更多信息,了解如何将每个供应商实际纳入阵列?我目前正在尝试使用 $sps[] = array(get_post_meta( $items['product_id'], 'Supplier', true )); 将每个供应商放入一个数组中。但似乎运气不太好
标签: php arrays wordpress woocommerce hook