警告:我是一名独立自由设计师而非开发人员; - )
我在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
。
帮助表示赞赏。
答案 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循环有疑问...你只是为了得到最后一项而循环?