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

标签 php wordpress woocommerce orders email-notifications

我能够在购物车和结帐页面中获取元字段,但在电子邮件中我尝试使用 $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;
}

感谢任何帮助。

最佳答案

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

电子邮件代码

 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' );

函数 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
}

关于php - 在 Woocommerce 电子邮件通知上显示自定义元字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49428107/

相关文章:

php - 使用 php 5.3 在插入之前检查 MySQL 行中的数据

php - 对具有相同 ID 的所有文本字段只读

javascript - Facebook 分享 PHP - 检查是否已分享

PHP $wpdb 选择?

php - WooCommerce Rest API "PUT"请求发生 fatal error (更新产品)

php - 将图像发布到预定义页面上的相册

php - get_option 破坏 wordpress 中的 php 样式表

wordpress - 将 Twitter Bootstrap 与 Wordpress 一起使用

mysql - 为什么我不断收到 posts.ID 未知列,而该列存在?

woocommerce - 添加自定义订单项元数据