将 WooCommerce 订单产品名称保存到用户元自定义字段

Save WooCommerce Order Product Name to User Meta Custom Field

警告:我是一名独立的自由设计师,而不是开发人员 ;-)

我在 Wordpress 用户元中创建了一个名为 membership 的自定义字段。

我已尝试使用以下代码将 WooCommerce 产品名称保存到结帐时的 membership 自定义字段 with help from this answer

更新尝试

function wascc_woocommerce_checkout_update_user_meta_membership ( $customer_id, $posted ) {

    if (isset($posted['$orderid'])) {
        $order = $posted['$orderid'];
    }
    $theorder = new WC_Order( $order );
    $items = $theorder->get_items();

    foreach ( $items as $item ) {
        $product_name = $item['name'];
    }

    if (!(empty($product_name))) {
        update_user_meta( $customer_id, 'membership', $product_name);
    }   

}

add_action( 'woocommerce_checkout_update_user_meta', 'wascc_woocommerce_checkout_update_user_meta_membership', 10, 2 );

它不会产生错误,但不会将产品名称保存到 membership

感谢帮助。

.

正如我已经注释掉的,你应该使用 woocommerce_checkout_update_order_meta

像这样:

function wascc_woocommerce_checkout_update_user_meta_membership ( $order_id ) {

    $theorder = new WC_Order( $order_id );
    $items = $theorder->get_items();

    foreach ( $items as $item ) {
        $product_name = $item['name'];
    }

    if (!(empty($product_name))) {

        // Gets the customer/user ID associated with the order. Guests are 0.
        $customer_id = $theorder->get_user_id();

        update_user_meta( $customer_id, 'membership', $product_name );

    }   

}

add_action( 'woocommerce_checkout_update_order_meta', 'wascc_woocommerce_checkout_update_user_meta_membership' );

虽然我对你的 foreach 循环有疑问......你循环只是为了得到最后一个项目?