首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Woocommerce电子邮件通知上显示自定义元字段值

在Woocommerce电子邮件通知上显示自定义元字段值
EN

Stack Overflow用户
提问于 2018-03-22 19:57:12
回答 2查看 1.2K关注 0票数 2

我可以在购物车和结账页面中获取元字段,但在电子邮件中,我尝试使用$order数组获取,但在电子邮件中找不到任何自定义字段。

如何在电子邮件通知(管理员、客户)中获取自定义元字段?

我的代码如下:

代码语言:javascript
复制
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;
}

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

发布于 2018-03-22 21:08:37

您可以使用以下代码来实现。

电子邮件代码

代码语言:javascript
复制
 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;
}

管理员端订单添加/编辑页面

代码语言:javascript
复制
add_action( 'woocommerce_email_after_order_table', 'woocommerce_email_after_order_table_func' );

function woocommerce_email_after_order_table_func( $order ){ ?>

代码语言:javascript
复制
<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
EN

Stack Overflow用户

发布于 2018-03-22 21:41:11

你的代码是不完整和不正确的。请将其替换为以下内容:

代码语言:javascript
复制
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'] );
}

现在,一旦下了订单(已提交),此自定义字段将出现在订单项和电子邮件通知上的任何位置,也可以使用…因此,您将不需要任何其他东西。您只需为此自定义字段值设置正确的标签。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49428107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档