我可以在购物车和结帐页面中获取元字段,但在电子邮件中,我尝试使用$order
数组,但在电子邮件中找不到任何自定义字段。
如何在电子邮件通知中获取自定义元字段(管理员,客户)?
我的代码如下:
function wdm_add_custom_order_line_item_meta($item, $cart_item_key, $values, $order)
{
if(array_key_exists('wdm_name', $values))
{
$item->add_meta_data('_wdm_name',$values['wdm_name']);
}
}
add_action( 'woocommerce_email_order_details', 'action_email_order_details', 10, 4 );
function action_email_order_details( $order, $sent_to_admin, $plain_text, $email ) {
if( $sent_to_admin ): // For admin emails notification
echo get_post_meta( $order->id, '_wdm_name', true );
endif;
}
感谢任何帮助。
答案 0 :(得分:1)
您可以使用以下代码。
电子邮件代码
add_filter( 'woocommerce_email_order_meta_fields', 'woocommerce_email_order_meta_fields_func', 10, 3 );
function woocommerce_email_order_meta_fields_func( $fields, $sent_to_admin, $order ) {
$fields['appointment_date'] = array(
'label' => __( 'Wdm name', 'woocommerce' ),
'value' => wptexturize( get_post_meta( $order->id, '_wdm_name', true ) )
);
$fields['appointment_time'] = array(
'label' => __( 'Wdm Name', 'woocommerce' ),
'value' => wptexturize( get_post_meta( $order->id, '_wdm_name', true ) )
);
//... more meta fields goes here
return $fields;
}
管理员侧订单添加/修改页面
add_action( 'woocommerce_email_after_order_table', 'woocommerce_email_after_order_table_func' );
function woocommerce_email_after_order_table_func($ order){ ?>
<h3>Wdm Name (Custom field)</h3>
<table>
<tr>
<td>Date: </td>
<td><?php echo wptexturize( get_post_meta( $order->id, '_wdm_name', true ) ); ?></td>
</tr>
<tr>
<td>Time: </td>
<td><?php echo wptexturize( get_post_meta( $order->id, '_wdm_name', true ) ); ?></td>
</tr>
<!--additional custom meta and HTML code goes here-->
</table>
<?php
}
答案 1 :(得分:1)
您的代码不完整且不正确。请用以下内容替换它:
add_action( 'woocommerce_checkout_create_order_line_item', 'custom_checkout_create_order_line_item', 20, 4 );
function custom_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) {
if( isset( $values['wdm_name'] ) )
$item->add_meta_data( __('Custom label'), $values['wdm_name'] );
}
现在订单下达(提交)后,此自定义字段将显示在订单商品和电子邮件通知的任何位置......所以您不需要任何其他内容。您只需要为此自定义字段值设置正确的标签。