将 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 循环有疑问......你循环只是为了得到最后一个项目?
警告:我是一名独立的自由设计师,而不是开发人员 ;-)
我在 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 循环有疑问......你循环只是为了得到最后一个项目?