我主要按照本指南创建了一个插件,它只需向给定的产品添加一小部分数据。
我知道Wooccommerce在这里做了一些更改。
我遇到的问题是,当我将商品添加到购物车并访问购物车页面时,我会看到一个空白屏幕。我相信这个问题源于这个过滤器的使用:
add_filter('wocommerce_get_cart_item_from_session'…
如果我用这个过滤器评论行,我的结账页面就可以工作(但没有添加到我的产品中的额外细节)。我不知道为什么这个过滤器不工作,或者它有什么问题??
wooccommerce的变化说:
WooCommerce 2.0不再使用PHP session_start函数,而是使用WordPress的瞬态,这很好,除非你的代码碰巧依赖$_session。
据我所见,我没有开始任何新的会话(我的代码与第一个链接90%相同)。也许这是我的服务器有问题?有什么想法吗?
我浏览了很多,我建议您阅读以下内容:
解决方案是挂在那里,还恢复您的自定义购物车项目数据。
示例代码:
add_filter( 'woocommerce_add_cart_item_data', function ( $cartItemData, $productId, $variationId ) {
$cartItemData['myCustomData'] = 'someCustomValue';
return $cartItemData;
}, 10, 3 );
add_filter( 'woocommerce_get_cart_item_from_session', function ( $cartItemData, $cartItemSessionData, $cartItemKey ) {
if ( isset( $cartItemSessionData['myCustomData'] ) ) {
$cartItemData['myCustomData'] = $cartItemSessionData['myCustomData'];
}
return $cartItemData;
}, 10, 3 );
To also show the data at the cart/checkout page you can use the following code:
add_filter( 'woocommerce_get_item_data', function ( $data, $cartItem ) {
if ( isset( $cartItem['myCustomData'] ) ) {
$data[] = array(
'name' => 'My custom data',
'value' => $cartItem['myCustomData']
);
}
return $data;
}, 10, 2 );
现在的最后一件事是在下订单时保存数据:
add_action( 'woocommerce_add_order_item_meta', function ( $itemId, $values, $key ) {
if ( isset( $values['myCustomData'] ) ) {
wc_add_order_item_meta( $itemId, 'myCustomData', $values['myCustomData'] );
}
}, 10, 3 );
你不必做任何其他事情,在后台显示数据,所有订单项元数据都会自动显示。
这是的
如何使用WooCommerce检索cart_item_data?
例如,您必须将这些内容添加到主题的functions.php文件中。