我正在寻找一种在创建新订单时为主题和收件人电子邮件创建新占位符的方法吗?我使用ACF创建了新字段:调用了“ chantier”和“ conducteur de travaux”,我希望能够在主题邮件中添加{chantier}并将{conducteur}添加到收件人。
这是我在ACF字段中的代码:
if( function_exists('acf_add_local_field_group') ):
acf_add_local_field_group(array(
'key' => 'group_5c49b50b45a52',
'title' => 'Nom du chantier',
'fields' => array(
array(
'key' => 'field_5c49b5127665d',
'label' => 'Chantier',
'name' => 'chantier',
'type' => 'post_object',
'instructions' => '',
'required' => 0,
'conditional_logic' => 0,
'wrapper' => array(
'width' => '',
'class' => '',
'id' => '',
),
'show_fields_options' => array(
0 => 'order',
1 => 'email',
),
'post_type' => array(
0 => 'chantier',
),
'taxonomy' => '',
'allow_null' => 0,
'multiple' => 0,
'return_format' => 'object',
'ui' => 1,
),
array(
'key' => 'field_5c541edb71030',
'label' => 'Conducteur de travaux',
'name' => 'conducteur_de_travaux',
'type' => 'user',
'instructions' => '',
'required' => 0,
'conditional_logic' => 0,
'wrapper' => array(
'width' => '',
'class' => '',
'id' => '',
),
'show_fields_options' => array(
0 => 'order',
1 => 'email',
),
'role' => array(
0 => 'conducteur-de-travaux',
),
'allow_null' => 0,
'multiple' => 0,
'return_format' => 'array',
),
),
'location' => array(
array(
array(
'param' => 'checkout',
'operator' => '==',
'value' => 'wc-before-billing-form',
),
),
),
'menu_order' => 0,
'position' => 'normal',
'style' => 'default',
'label_placement' => 'top',
'instruction_placement' => 'label',
'hide_on_screen' => '',
'active' => 1,
'description' => '',
));
endif;
我尝试过使用此处建议的代码:
Create additional variables/placeholders for Woocommerce email notifications subject
但是它不起作用,这是我的代码:
add_filter( 'woocommerce_email_format_string' , 'add_custom_email_format_string', 20, 2 );
function add_custom_email_format_string( $string, $email ) {
// The post meta key used to save the value in the order post meta data
$meta_key = '_chantier';
// Get the instance of the WC_Order object
$order = $email->object;
// Get the value
$value = get_field( $meta_key, $order_id );
// Additional subject placeholder
$new_placeholders = array( '{chantier}' => $value );
// Return the clean replacement value string for "{chantier}" placeholder
return str_replace( array_keys( $additional_placeholders ), array_values( $additional_placeholders ), $string );
}
当我收到邮件时,收到:订购{chantier}。 我不知道我的错误在哪里...
对于“ conducteur-de-travaux”字段(用户字段),我想恢复“ conducteur de-travauux”的电子邮件并将其添加到新的订单收件人电子邮件中。可能吗?
答案 0 :(得分:0)
注意:在stackOverFlow上,为了避免因“过于广泛”的原因而关闭您的问题,请始终提出一个小问题,而不是一次提出多个不同的问题。规则是一个问题的一个答案。
您的代码中存在一些错误和错误,例如$order_id
,这些错误和错误尚未定义,因此无法正常工作。
您需要确保要使用meta_key获取ACF值。似乎应该是 'chantier'
而不是'_chantier'
(您可以尝试两者中的 来查看哪个有效)。
以下代码将为电子邮件通知的新占位符指定ACF值:
add_filter( 'woocommerce_email_format_string', 'add_custom_email_format_string', 10, 2 );
function add_custom_email_format_string( $string, $email ) {
// HERE the ACF slug to be used to get the value
$meta_key = 'chantier';
// Get the instance of the WC_Order object
$order = $email->object;
// Get ACF value (with the correct Order ID)
$value = get_field( $meta_key, $order->get_id() );
// Additional subject placeholder
$new_placeholders = array( '{chantier}' => $value );
// Get the clean replacement value string for "{chantier}" placeholder
return str_replace( array_keys( $additional_placeholders ), array_values( $additional_placeholders ), $string );
}
代码进入您的活动子主题(或活动主题)的function.php文件中。现在应该可以使用了。