如何使用WooCommerce检索cart_item_data?
在add_to_cart
功能期间,有一个过滤器用于添加“购物车项目数据”。筛选器为 。我希望将我的自定义插件数据存储在其中,以便相对于项目存储数据,并且可以使用不同的数据添加多个产品。woocommerce_add_cart_item_data
这一切似乎都有效,但我无法检索数据。我无法弄清楚。数据就在那里,我可以在序列化的字符串中看到它,但我无法将其拉出。
echo '<pre>';
var_dump( WC() );
foreach( WC()->cart->get_cart() as $cart_item ) {
var_dump( $cart_item );
var_dump( WC()->cart->get_item_data( $cart_item ) );
}
echo '</pre>';
的第一个转储具有属性:。不过,_data属性受到保护,但我可以在序列化数据中看到我的自定义字段。WC()
session->_data->cart->(serialized data)
$cart_item 是一个包含其他数据的数组,但它不包括我的自定义数据:(product_id
最后,使用get_item_data()
方法,我认为我已经弄清楚了。我传入了购物车项目对象,并且...空字符串。同样,如果我传递钥匙,而不是购物车项目本身。
我应该如何访问购物车项目数据?
以下是“添加购物车项目数据”功能,该功能有效(或至少似乎有效):
function save_class_menu_selection( $cart_item_data, $product_id, $variation_id ) {
if ( !product_is_class( $product_id ) ) return $cart_item_data;
// Save the date, or give a fatal warning. Date is required.
if ( !empty($_REQUEST['class-date']) ) {
$cart_item_data['class-date'] = stripslashes($_REQUEST['class-date']);
return $cart_item_data;
}else{
wp_die('<h2>Invalid Class Date Selected</h2><p>You tried to add a class to your cart, but the date selected was invalid. Please try again.</p>');
exit;
}
}
add_filter( 'woocommerce_add_cart_item_data', 'save_class_menu_selection', 10, 3 );