我有这些功能可以检查购物车中的产品 ID,但我需要使用变量
$products_ids
. 将其与添加到表单的产品 ID 数组进行检查
这会检查购物车中的产品 ID:
$product_cart_id = WC()->cart->generate_cart_id( $product_ids );
$in_cart = WC()->cart->find_product_in_cart( $product_cart_id );
这存储在管理字段中添加的产品 ID:
$product_ids = get_option('restricted_product_ids');
只有当它们包含在 $products_ids 数组和购物车中时,我才需要输出匹配的 id。
我想我需要使用
in_array()
或array_intersect()
这是我试过的:
$product_ids = get_option('restricted_product_ids');
$product_cart_id = WC()->cart->generate_cart_id( $product_ids );
$in_cart = WC()->cart->find_product_in_cart( $product_cart_id );
echo var_dump( in_array( $in_cart, array( $product_ids ) ) );
还有这个:
$product_cart_id = WC()->cart->generate_cart_id( $product_ids );
$in_cart = WC()->cart->find_product_in_cart( $product_cart_id );
$ids = array_intersect( $product_ids, $in_cart );
更新:
$product_ids = get_option('restricted_product_id
s');
returns string '111342, 111347'
不过,我也可以这样输出:
array (size=2)
0 => string '111342' (length=6)
1 => string '111347' (length=6)
更新:我也试过这个:
$cart_ids = array_merge(
wp_list_pluck(WC()->cart->get_cart_contents(), 'variation_id'),
wp_list_pluck(WC()->cart->get_cart_contents(), 'product_id')
);
$product_ids = get_option('restricted_product_ids');
$ids = array_intersect( $cart_ids, $products_ids );
并使用 $ids 打印匹配的 ID,但我得到的是数组而不是 ID。
当我对受限 ID 进行 var_dump 时,我得到:
string '111342, 111347'
和 int 用于购物车 ID
array (size=1)
'e877cbddd23b3bfa5b77782ba905b32e' => int 111347
这应该可以解决问题...
// Convert comma separated string of ids into an array if integers.
$restricted_product_ids = array_filter( array_map( function( $id ) {
return absint( $id );
}, explode( ',', get_option( 'restricted_product_ids' ) ) ) );
// Our output array.
$ids = [];
// Loop through each item in the cart.
foreach( WC()->cart->get_cart() as $cart_item ) {
// Get the product id.
$product_id = absint( $cart_item[ 'product_id' ] );
// Check if the product id is restricted.
if ( in_array( $product_id, $restricted_product_ids ) ) {
// Add it to our output array.
$ids[] = $product_id;
}
}
我们获取购物车中的所有商品并循环遍历它们。在循环中,我们可以访问每个项目的产品 ID。使用产品 ID,我们可以检查它是否存在于受限数组中,然后将其推送到我们的输出。