在钩子函数中获取保存在Order items元中的自定义字段值

时间:2017-07-08 11:44:46

标签: php wordpress woocommerce hook-woocommerce orders

我可以在购物车和结帐页面上添加,验证,显示产品页面上的自定义字段。有人可以告诉我如何使用 woocommerce_order_status_completed 挂钩检索自定义字段值?< / p>

我希望在确认电子邮件发送给用户后发送包含自定义字段数据的其他电子邮件

static function sendCustomData($order_id) {
    $order = wc_get_order($order_id);
    $items = $order->get_items();

    foreach ($items as $item) {
        $product_id = $item['product_id'];

        $Id = get_post_meta($product_id, '_wpws_ID', true);
        $first_name = $order->get_billing_first_name();
        $billing_email = $order->get_billing_email();


        if (empty($Id))
        continue;

        $mail = new CustomMails();
        $mail->SendMailtoReaderOnWCOrderComplete($first_name, $billing_email, $Id);
    }
}
add_action('woocommerce_order_status_completed','sendCustomData');
  

保存自定义订单元值

public static function tshirt_order_meta_handler( $item_id, $values, $cart_item_key ) {
    if( isset( $values['name_on_tshirt'] ) ) {
        wc_add_order_item_meta( $item_id, "name_on_tshirt", $values['name_on_tshirt'] );
    }
}
add_action( 'woocommerce_new_order_item', 'tshirt_order_meta_handler', 1, 3 );

2 个答案:

答案 0 :(得分:2)

要获取 "name_on_tshirt" 自定义字段,您需要获取订单商品ID,并且您需要以这种方式使用wc_get_order_item_meta()函数:

foreach ($order->get_items() as $item_id => $item) {
    ## HERE ==> Get your custom field value
    $name_on_tshirt wc_get_order_item_meta( $item_id, "name_on_tshirt", true );
}

答案 1 :(得分:0)

if (empty($Id)) ..更改为if (empty($wbnId))