I am trying to apply some css in my php for a test to see how to hide a button in my php file. It’s not happening at the moment and I am not sure why it is not removing the button.
HTML:
<a href="https://test,com" class="button" name="hpy_cs_continue" value="Continue Shopping">Continue Shopping</a>
PHP
verify_all_products_in_cart() { $shopping_cart_button = "<style type='text/css'> a[name='hpy_cs_continue']{ display:none !important; } </style>"; return $shopping_cart_button; }
UPDATE
The above code is a test code to try and fix the main code below:
add_action( 'woocommerce_after_cart', 'verify_all_products_in_cart' ); function verify_all_products_in_cart() { $all_products = false; $all_products_array = wc_get_products( array( 'return' => 'ids', 'limit' => -1 ) ); $products_in_cart_array = array(); // Loop over $cart items foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { $products_in_cart_array &= in_array($cart_item['product_id']); } if($all_products_array == $products_in_cart_array){ $all_products = true; } else{ $all_products = false; } if ($all_products = true){ $shopping_cart_button = '<style>a[name="hpy_cs_continue"]{ display:none !important;}</style>'; } else{ $shopping_cart_button = '<style>a[name="hpy_cs_continue"]{ display:block !important;}</style>'; } return $shopping_cart_button; }
Advertisement
Answer
In your verify_all_products_in_cart
function, you have several isues:
in_array needs 2 parameters, you’re only sending one
$products_in_cart_array &= in_array($cart_item['product_id']);
this is doing an assignment =
not a check ==
/ ===
if ($all_products = true){
$all_products
is overused being set in 3 places
$shopping_cart_button
is a poorly named and unessicary variable with a lot of duplicated code
You could re-write this function to something like the below which should work for your needs (assuming wc_get_products returns an array of ids, if not it may take a bit of modifying):
add_action( 'woocommerce_after_cart', 'verify_all_products_in_cart' ); function verify_all_products_in_cart() { $display = 'block'; $all_products_array = wc_get_products(['return' => 'ids', 'limit' => -1]); // Im assuming this returns an array of ids for all products.. $products_in_cart_array = []; foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { $products_in_cart_array[]=$cart_item['product_id']; } if(count($all_products_array) !== count($products_in_cart_array)){ $display = 'none'; } return "<style>a[name='.'hpy_cs_continue'']{ display:$display !important;}</style>"; }