Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在特定电子邮件上显示产品ACF字段_Php_Wordpress_Woocommerce_Advanced Custom Fields_Hook Woocommerce - Fatal编程技术网

Php 在特定电子邮件上显示产品ACF字段

Php 在特定电子邮件上显示产品ACF字段,php,wordpress,woocommerce,advanced-custom-fields,hook-woocommerce,Php,Wordpress,Woocommerce,Advanced Custom Fields,Hook Woocommerce,所以我差点就明白了,但这封电子邮件的最后一个细节让我的头脑有点纠结 我需要显示产品的ACF(高级自定义字段)字段(在本例中,这是一个自定义发货时间) 但仅在新订单电子邮件(处理订单和等待付款订单发送给客户)中,然后在新订单电子邮件中发送给管理员 这是我找到的主要方式:提前谢谢你@ 我还向它添加了一些条件设置(请注意,我的PHP非常开始复制pasty) 这些都很有效 然而,我无法回避的是,它只能在新订单电子邮件上工作。 我有这样的设置,它的工作,但它显示在所有电子邮件中,包含电子邮件订单的详

所以我差点就明白了,但这封电子邮件的最后一个细节让我的头脑有点纠结

我需要显示产品的ACF(高级自定义字段)字段(在本例中,这是一个自定义发货时间)

  • 但仅在新订单电子邮件(处理订单和等待付款订单发送给客户)中,然后在新订单电子邮件中发送给管理员

这是我找到的主要方式:提前谢谢你@

我还向它添加了一些条件设置(请注意,我的PHP非常开始复制pasty) 这些都很有效

然而,我无法回避的是,它只能在新订单电子邮件上工作。 我有这样的设置,它的工作,但它显示在所有电子邮件中,包含电子邮件订单的详细信息,我不能在已完成的订单电子邮件上显示发货时间,因为它会造成混乱

//在电子邮件通知中显示产品ACF自定义字段值
添加过滤器('woocommerce\u order\u item\u name','custom\u order\u item\u name',10,2);
函数自定义\订单\项目\名称($item\名称,$item){
//仅针对电子邮件通知
如果('new_order'=$email->id)
返回$item_name;
//获取WC_产品对象(从订单项)
$product=$item->get_product();
$othershipping=get_字段('shipping_custom',$product->get_id());
如果($shpng\u value=get\u字段($shipping\u',$product->get\u id())==“24小时”){
$item_name.='

。(“发货时间”,“woocommerce”):。明天(24小时)拿到。

; } elseif($shpng\u value=get\u字段('shipping\u',$product->get\u id())==“2-5天”){ $item_name.='

。(“发货时间”、“woocommerce”):。2-5天

; } elseif($shpng\u value=get\u字段('shipping\u',$product->get\u id())==“其他”){ $item_name.='

。uu('Shipping time','woocommerce'):。$othershipping.

; } 返回$item_name; }

我已经试着换了电话

if('new_order'=$email->id)

if('new_order'!=$email->id)
但这只会使它在任何地方都不起作用


我还以为可能是这一部分

函数自定义订单商品名称($item商品名称,$item){
我需要添加
($order、$sent\u to\u admin、$plain\u text、$email)

函数自定义订单项目名称($item\u name,$item,$order,$sent\u to\u admin,$plain\u text,$email)

但这会使电子邮件返回错误。

通常,这应该与下面的代码一起工作

注意:我的答案主要基于:。信用:@所以别忘了把答案投给我

//将“sent_to_admin”设置为全局变量
函数email\u order\u id\u as\u a\u global($order,$sent\u to\u admin,$plain\u text,$email){
$GLOBALS['email_data']=数组(
'sent_to_admin'=>$sent_to_admin,//$email->id,//电子邮件id(发送到特定的电子邮件通知)
);
}
添加操作('WOOMerce\u email\u before\u order\u table','email\u order\u id\u as\u a\u global',1,4);
函数自定义\订单\项目\名称($item\名称,$item){
如果(!is_wc_endpoint_url()&&$item->is_type('line_item')){
//获取自定义“email_data”全局变量
$refnamelobalsvar=$GLOBALS;
$email_data=$refNameGlobalsVar['email_data'];
//仅适用于新订单
如果(是数组($email\u data)&&$email\u data['email\u id']=='new\u order'){
//获取WC_产品对象(从订单项)
$product=$item->get_product();
$othershipping=get_字段('shipping_custom',$product->get_id());
如果($shpng\u value=get\u字段($shipping\u',$product->get\u id())==“24小时”){
$item_name.='

。(“发货时间”,“woocommerce”):。明天(24小时)拿到。

; } elseif($shpng\u value=get\u字段('shipping\u',$product->get\u id())==“2-5天”){ $item_name.='

。(“发货时间”、“woocommerce”):。2-5天

; } elseif($shpng\u value=get\u字段('shipping\u',$product->get\u id())==“其他”){ $item_name.='

。uu('Shipping time','woocommerce'):。$othershipping.

; } } } 返回$item_name; } 添加过滤器('woocommerce\u order\u item\u name','custom\u order\u item\u name',10,2);
谢谢!最初,此邮件只发送给新订单,无法按照我的意愿发送多封电子邮件(客户等待订单客户处理订单和新订单)所以我想我可以只为new order if语句重复//的行,并将电子邮件ID更改为正确的,这就成功了!非常感谢