Aquí está la historia: estoy trabajando con uno de mis clientes independientes y necesito mostrar cierto contenido en el pago (un «términos y condiciones» específicos del producto) si dicho producto está en el carrito.
Ahora, siempre he buscado productos en el carrito «enrollando» a través del carrito con un foreach (aquí, por ejemplo: Aplicar un cupón programáticamente si un producto está en el carrito). Pero como dije, después de una investigación aleatoria, descubrí otra función mágica de WooCommerce: «find_product_in_cart ()«. Lo que significa que encontrar un producto en el carrito no requiere bucles personalizados o PHP complejo … es solo un «un forro». ¡Disfrutar!
Php Snippet: verifique fácilmente si la identificación del producto está contenida en el carrito – WooCommerce
Nota: Creo que este método Solo funciona con productos «simples». En caso de que use la alternativa de fragmento que encuentre a continuación.
/** * @snippet Check if Product ID is in the Cart - WooCommerce * @how-to businessbloomer.com/woocommerce-customization * @author Rodolfo Melogli, Business Bloomer * @testedwith WooCommerce 3.9 * @community https://businessbloomer.com/club/ */ add_action( 'woocommerce_before_cart', 'bbloomer_find_product_in_cart' ); function bbloomer_find_product_in_cart() { $product_id = 282; $product_cart_id = WC()->cart->generate_cart_id( $product_id ); $in_cart = WC()->cart->find_product_in_cart( $product_cart_id ); if ( $in_cart ) { $notice = 'Product ID ' . $product_id . ' is in the Cart!'; wc_print_notice( $notice, 'notice' ); } }
Alternativa de fragmentos PHP (la forma «antigua», todavía funciona): verifique si la identificación del producto está en el carrito a través de un bucle foreach – wooCommerce
/** * @snippet Check if Product ID is in the Cart (Alternative) - WooCommerce * @how-to businessbloomer.com/woocommerce-customization * @author Rodolfo Melogli, Business Bloomer * @testedwith WooCommerce 3.9 * @community https://businessbloomer.com/club/ */ add_action( 'woocommerce_before_cart', 'bbloomer_find_product_in_cart_alt' ); function bbloomer_find_product_in_cart_alt() { $product_id = 282; $in_cart = false; foreach( WC()->cart->get_cart() as $cart_item ) { $product_in_cart = $cart_item['product_id']; if ( $product_in_cart === $product_id ) $in_cart = true; } if ( $in_cart ) { $notice = 'Product ID ' . $product_id . ' is in the Cart!'; wc_print_notice( $notice, 'notice' ); } }