【发布时间】:2018-12-10 16:32:33
【问题描述】:
在 woocommerce 中,我正在尝试使用以下方法检查特定产品类别的购物车商品:
add_action('woocommerce_before_cart', 'fs_check_category_in_cart');
function fs_check_category_in_cart() {
// Set $cat_in_cart to false
$cat_in_cart = false;
// Loop through all products in the Cart
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$product = $cart_item['data'];
echo '<pre>',print_r($product),'</pre>';
// If Cart has category "download", set $cat_in_cart to true
if ( has_term( 'downloads', 'product_cat', $product->get_id() ) ) {
$cat_in_cart = true;
break;
}
}
// Do something if category "download" is in the Cart
if ( $cat_in_cart ) {
// For example, print a notice
wc_print_notice( 'Category Downloads is in the Cart!', 'notice' );
// Or maybe run your own function...
// ..........
}
}
我无法实现它。当我print_r( $product )进一步检查时
数组的末尾看起来像:
[current_class_name:WC_Data_Store:private] => WC_Product_Data_Store_CPT
[object_type:WC_Data_Store:private] => product-simple
)
[meta_data:protected] =>
)
1
数组末尾的这个 1 将其自身附加到我尝试引用的任何变量。所以我得到了
downloads1
如果有人知道这个数字可能是从哪里来的,这让我很紧张!
为了记录,print_r( $woocommerce ) 在数组末尾有 1。
感谢任何帮助。
【问题讨论】:
-
这是由于
echo '<pre>',print_r($product),'</pre>';构造。您要么希望echo '<pre>',print_r($product, true),'</pre>';将 print_r return 设为字符串而不是直接输出,要么希望使用单独的语句echo '<pre>'; print_r($product); echo '</pre>'; -
尝试获取这样的产品 ID $cart_item['product_id'] 而不是 $cart_item['data']
标签: php wordpress woocommerce cart custom-taxonomy