当前位置: 首页 > 知识库问答 >
问题:

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

雷晋
2023-03-14

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

任何帮助都很感激。

共有2个答案

邵飞鸿
2023-03-14

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

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

现在,一旦下单(提交),该自定义字段将出现在订单项目和电子邮件通知上的任何地方…因此您将不需要任何其他内容。您只需要为此自定义字段值设置正确的标签。

廉雅惠
2023-03-14

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

电子邮件代码

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

功能是在订单后发送电子邮件,表格是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
}
 类似资料:
  • 我有这个代码在我的function.php,我怎么能在管理邮件订单中分配这个字段值?谢谢!

  • 我在将自定义字段变量传递到电子邮件收据时遇到一些问题。我浏览了StackOverflow,但不幸的是,没有一个答案/解决方案对我的情况有帮助。 我创建的字段实际上会正确地显示在管理仪表板和“签出后”页面中,它不会在任何电子邮件中显示变量。 下面是我在functions.php中创建自定义字段的地方: 下面是我更新后元的地方: 在这里,我将值传递给管理订单仪表板: 在这里,我试图将这些值传递给新订单

  • 因此,当我在mytheme/functions.php文件中编写这段代码时,这里有一个交易 它只在后端工作(产品编辑页面),它保存了变量,但没有显示在meta或add to card按钮之前或之后,我找不到解决方案 我尝试了echo,但仍然没有结果 所以我以为我是我的主题?不,我在其他vps上安装了wordpress,但我仍然没有显示文本字段text nothing 如果你知道这个问题,请友好地告

  • 我需要在管理订单页面、谢谢和电子邮件通知中显示我的自定义签出字段。 我正在使用验证和保存WooCommerce回答代码中特定支付网关的额外结账字段来显示,验证和保存我的自定义字段。 从显示管理订单详细信息上的自定义字段数据,我试图显示自定义字段保存的输入值。 这是我到目前为止的代码: 但它不起作用。该字段不会附加到数据库中,但不会显示在任何位置: 如何正确显示字段?

  • 我无法将产品属性添加到新订单电子邮件中。我已经将下面的代码片段添加到email-order-items.php(在//SKU..part之后),但是什么也没有发生。甚至滴度“位置:”也不可见。有什么想法吗?

  • 我在wordpress网站上安装了签出字段编辑器。我创建了自定义字段。但是,使用以下代码,PCCustomer字段将同时出现在发送给我和客户的“新订单”电子邮件中。相反,我希望它完全属于我。我试着编辑代码,但仍然不起作用。