在Woocommerce中的电子邮件订单总计表上的新行中插入自定义字段值

时间:2018-08-16 13:05:56

标签: php wordpress woocommerce custom-fields email-notifications

我正在帮助妈妈为她在丹麦的商店创建网站。 一切正常,但现在我遇到了问题。 我需要能够在订单完整的电子邮件中创建一个自定义字段,该字段显示跟踪和跟踪编号,我已经在管理订单页面上插入了该字段。到目前为止,我所做的一切都没有成功,因此,我寻求您的帮助。

我添加了一个自定义字段,名为Track & Trace Pakkenr.(请参见屏幕截图1) 但是问题是在订单完整的电子邮件中(在运输下)(丹麦语{forsendelse,请参见屏幕截图2)得到此信息

我也是编码的入门者,所以如果您能提供任何帮助或建议,请严格遵循。

这里是screenshot 1screenshot 2

3 个答案:

答案 0 :(得分:4)

要使此订单自定义字段值显示在电子邮件通知的订单总计表中,请使用以下命令:

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文件中。经过测试并可以正常工作。

您将得到类似的东西:

enter image description here

从此:

enter image description here

答案 1 :(得分:0)

您可以在订单电子邮件中添加自定义字段,您需要使用代码中具有 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/

答案 2 :(得分:0)

以下是添加自定义元字段以订购电子邮件的简单但实用的示例

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;
}

在订购后电子邮件表中的电子邮件中:

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
}

有关更多帮助,请参见以下链接:Click here