在 Woocommerce 中插入自定义字段值作为电子邮件订单总计 table 的新行
Insert a custom field value as a new row on email order totals table in Woocommerce
我正在帮助我妈妈为她在丹麦的商店创建网站。
一切顺利,但现在我遇到了一个问题。
我需要能够在订单完成电子邮件中创建一个自定义字段,显示跟踪和跟踪编号,我已插入管理订单页面。到目前为止我所做的一切都没有奏效,所以我寻求你的帮助。
我添加了一个名为 Track & Trace Pakkenr.
的自定义字段(参见屏幕截图 1)
但问题是在订单完成电子邮件中获取此信息,正在发货(forsendelse
丹麦语,请参见屏幕截图 2)
我也是编码方面的完全初学者,所以如果你们中的任何人可以提供任何帮助或建议,请确保万无一失。
这是screenshot 1 and screenshot 2。
您可以在订单邮件中添加自定义字段,您需要使用字段键,代码中有meta_key.
/**
* Add a custom field (in an order) to the emails
*/
add_filter( 'woocommerce_email_order_meta_fields', 'custom_woocommerce_email_order_meta_fields', 10, 3 );
function custom_woocommerce_email_order_meta_fields( $fields, $sent_to_admin, $order ) {
$fields['meta_key'] = array(
'label' => __( 'Label' ),
'value' => get_post_meta( $order->id, 'meta_key', true ),
);
return $fields;
}
参考:https://docs.woocommerce.com/document/add-a-custom-field-in-an-order-to-the-emails/
下面是将自定义元字段添加到订单电子邮件的简单但实用的示例
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['Track_Field'] = array(
'label' => __( 'Track', 'woocommerce' ),
'value' => wptexturize( get_post_meta( $order->id, 'Track_Field', true ) )
);
//... more meta fields goes here
return $fields;
}
在订单后的电子邮件中 table:
add_action( 'woocommerce_email_after_order_table', 'woocommerce_email_after_order_table_func' );
function woocommerce_email_after_order_table_func( $order ) {
?>
<h3>Track</h3>
<table>
<tr>
<td>Track Fields </td>
<td><?php echo wptexturize( get_post_meta( $order->id, 'Track_Field', true ) ); ?></td>
</tr>
<!--additional custom meta and HTML code goes here-->
</table>
<?php
}
如需更多帮助,请参阅此 link:Click here
要在电子邮件通知的订单总计 table 中显示此订单自定义字段值,请使用以下内容:
add_filter( 'woocommerce_get_order_item_totals', 'insert_custom_line_order_item_totals', 10, 3 );
function insert_custom_line_order_item_totals( $total_rows, $order, $tax_display ){
// Only on emails notifications
if( is_wc_endpoint_url() ) return $total_rows; // Exit
$tracking_label = 'Track & Trace Pakkenr.'; // The tracking label name
$tracking_value = $order->get_meta( $tracking_label ); // Get the tracking value (custom field).
if( empty($tracking_value) ) return $total_rows; // Exit
$new_total_rows = array(); // Initializing
// Loop through total rows
foreach( $total_rows as $key => $value ){
if( 'payment_method' == $key && ! empty($tracking_value) ) {
$new_total_rows['tracking_parcel'] = array(
'label' => $tracking_label,
'value' => $tracking_value,
);
}
$new_total_rows[$key] = $total_rows[$key];
}
return sizeof($new_total_rows) > 0 ? $new_total_rows : $total_rows;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
你会得到类似的东西:
来自这里:
我正在帮助我妈妈为她在丹麦的商店创建网站。 一切顺利,但现在我遇到了一个问题。 我需要能够在订单完成电子邮件中创建一个自定义字段,显示跟踪和跟踪编号,我已插入管理订单页面。到目前为止我所做的一切都没有奏效,所以我寻求你的帮助。
我添加了一个名为 Track & Trace Pakkenr.
的自定义字段(参见屏幕截图 1)
但问题是在订单完成电子邮件中获取此信息,正在发货(forsendelse
丹麦语,请参见屏幕截图 2)
我也是编码方面的完全初学者,所以如果你们中的任何人可以提供任何帮助或建议,请确保万无一失。
这是screenshot 1 and screenshot 2。
您可以在订单邮件中添加自定义字段,您需要使用字段键,代码中有meta_key.
/**
* Add a custom field (in an order) to the emails
*/
add_filter( 'woocommerce_email_order_meta_fields', 'custom_woocommerce_email_order_meta_fields', 10, 3 );
function custom_woocommerce_email_order_meta_fields( $fields, $sent_to_admin, $order ) {
$fields['meta_key'] = array(
'label' => __( 'Label' ),
'value' => get_post_meta( $order->id, 'meta_key', true ),
);
return $fields;
}
参考:https://docs.woocommerce.com/document/add-a-custom-field-in-an-order-to-the-emails/
下面是将自定义元字段添加到订单电子邮件的简单但实用的示例
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['Track_Field'] = array(
'label' => __( 'Track', 'woocommerce' ),
'value' => wptexturize( get_post_meta( $order->id, 'Track_Field', true ) )
);
//... more meta fields goes here
return $fields;
}
在订单后的电子邮件中 table:
add_action( 'woocommerce_email_after_order_table', 'woocommerce_email_after_order_table_func' );
function woocommerce_email_after_order_table_func( $order ) {
?>
<h3>Track</h3>
<table>
<tr>
<td>Track Fields </td>
<td><?php echo wptexturize( get_post_meta( $order->id, 'Track_Field', true ) ); ?></td>
</tr>
<!--additional custom meta and HTML code goes here-->
</table>
<?php
}
如需更多帮助,请参阅此 link:Click here
要在电子邮件通知的订单总计 table 中显示此订单自定义字段值,请使用以下内容:
add_filter( 'woocommerce_get_order_item_totals', 'insert_custom_line_order_item_totals', 10, 3 );
function insert_custom_line_order_item_totals( $total_rows, $order, $tax_display ){
// Only on emails notifications
if( is_wc_endpoint_url() ) return $total_rows; // Exit
$tracking_label = 'Track & Trace Pakkenr.'; // The tracking label name
$tracking_value = $order->get_meta( $tracking_label ); // Get the tracking value (custom field).
if( empty($tracking_value) ) return $total_rows; // Exit
$new_total_rows = array(); // Initializing
// Loop through total rows
foreach( $total_rows as $key => $value ){
if( 'payment_method' == $key && ! empty($tracking_value) ) {
$new_total_rows['tracking_parcel'] = array(
'label' => $tracking_label,
'value' => $tracking_value,
);
}
$new_total_rows[$key] = $total_rows[$key];
}
return sizeof($new_total_rows) > 0 ? $new_total_rows : $total_rows;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
你会得到类似的东西:
来自这里: