Reputation: 33
I'm new to WooCommerce development and I am trying to figure out how to display a checkbox alongside some text only if a specific product is added to the cart.
Here is the code that I have that always display that text:
// Woocommerce - CHECKBOX Disclaimer on Add To Cart Page
add_action('woocommerce_proceed_to_checkout', 'Disclaimer1_test', 10);
function Disclaimer1_test() {
global $product;
// How can I check against specific product ID?
echo '<input type="checkbox" required />';
echo '<p>This is a test</p>';
}
So, how can I display that checkbox only when a specific Product is in Cart?
Upvotes: 2
Views: 49
Reputation: 254211
You need to check in cart items product IDs if any defined product is in cart, to display the checkbox disclaimer (defining in the code the targeted product ID):
// Display a disclaimer checkbox on Cart Page, if specific product is in cart
add_action('woocommerce_proceed_to_checkout', 'cart_disclaimer1_test', 10);
function cart_disclaimer1_test() {
// Here, define the targeted product ID
$targeted_product_id = 121;
// Check if the targeted product is in cart
if ( in_array( $targeted_product_id, array_column( WC()->cart->get_cart(), 'product_id' ) ) ) {
echo '<input type="checkbox" name="disclaimer1" required />';
echo '<p>This is a test</p>';
}
}
Code goes in functions.php file of your child theme (or in a plugin). It should work.
The same thing for multiple defined products:
// Display a disclaimer checkbox on Cart Page, if any of the defined products is in cart
add_action('woocommerce_proceed_to_checkout', 'cart_disclaimer1_test', 10);
function cart_disclaimer1_test() {
// Here, define the targeted product IDs
$targeted_product_ids = array(121, 136);
// Check if any of the targeted products is in cart
if ( array_intersect( $targeted_product_ids, array_column( WC()->cart->get_cart(), 'product_id' ) ) ) {
echo '<input type="checkbox" name="disclaimer1" required />';
echo '<p>This is a test</p>';
}
}
Code goes in functions.php file of your child theme (or in a plugin).
Upvotes: 3