Save WooCommerce Order Product Name to User Meta Custom Field

为君一笑 提交于 2019-12-02 06:21:32

问题


Caveat: I'm a solo freelance designer not a developer ;-)

I've created a custom field in the Wordpress user meta called membership.

I've tried the following code to save the WooCommerce Product Name to the membership custom field on checkout with help from this answer.

Updated attempt:

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

It produces no error, but does not save the product name to membership.

Help appreciated.

Last question may be related.


回答1:


as I've commented out, you should use woocommerce_checkout_update_order_meta.

Something like this:

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

I have doubts with your foreach loop though... you are looping just to get the last item?



来源:https://stackoverflow.com/questions/36719372/save-woocommerce-order-product-name-to-user-meta-custom-field

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!