当订单 ID 不可用时,在 WooCommerce 电子邮件上获取订单元数据

M. *_*han 4 php wordpress metadata orders woocommerce

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

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

$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 )

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

Loi*_*tec 5

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

$order = $email->object;
Run Code Online (Sandbox Code Playgroud)

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

$my_var = $order->get_meta( 'custom_field_meta_key' );
Run Code Online (Sandbox Code Playgroud)

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

$my_var = get_post_meta( $order->get_id(), 'custom_field_meta_key', true );
Run Code Online (Sandbox Code Playgroud)