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

时间:2016-04-19 13:06:24

标签: woocommerce custom-fields

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

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

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

更新了尝试次数

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

帮助表示赞赏。

Last question may be related

1 个答案:

答案 0 :(得分:2)

正如我已经注释掉的那样,你应该使用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循环有疑问...你只是为了得到最后一项而循环?