当订单 ID 不可用时获取 WooCommerce 电子邮件中的订单元数据

Get order meta data on WooCommerce email when order Id is not available

我正在尝试提取我添加到我的 WooCommerce 结帐表单中的自定义字段的订单元数据。我在一个 PHP 文件中执行此操作,该文件用于将自定义部分添加到 WooCommerce 发送给客户的订单确认电子邮件中(即订单处理的最后阶段)。

为了做到这一点,我尝试使用 WC_Order class 和以下代码:

$my_var = get_post_meta( $order_id, 'custom_field_meta_key', true );

但是,这种方法行不通。我意识到 "order_id" 变量在 PHP 页面中不可用。我使用以下代码来确认这一点:

print_r(array_keys(get_defined_vars()));

下面是我得到的输出:

Array ( [0] => template_name [1] => args [2] => template_path [3] => default_path [4] => cache_key [5] => template [6] => filter_template [7] => action_args [8] => title [9] => delivery_date [10] => email )

有人可以帮助我获得预期结果的最佳方式吗?

由于 $email 变量似乎已定义,您通常可以使用以下方法获取 WC_Order 对象实例:

$order = $email->object;

然后要获取您的自定义字段(元数据),您可以使用 WC_Data 方法 get_meta() 如:

$my_var = $order->get_meta( 'custom_field_meta_key' );

或者您也可以使用旧的 WordPress 方式 (来自订单 ID):

$my_var = get_post_meta( $order->get_id(), 'custom_field_meta_key', true );