Estoy tratando de activar una ventana emergente simulando un clic de botón con una función JS simple cuando se agrega un producto de una categoría específica al carrito de Woocommerce. He visto a algunos hacerlo en funciones similares, pero no puedo imaginar que este funcione.
He compuesto la siguiente función que se ejecuta si la categoría está en el carrito y si la página es la página de pago:
add_action( 'woocommerce_before_checkout_form', 'check_category_in_cart' ); function check_category_in_cart() { $cat_in_cart = false; foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { if ( has_term( 'test', 'product_cat', $cart_item['product_id'] ) ) { $cat_in_cart = true; break; } } if ( $cat_in_cart ) { <script> jQuery(document).ready(function($) { $('#pop-up').trigger('click'); }); </script> } }Esta función hace que mi sitio web no funcione. ¿Alguien tiene una idea de cómo puedo hacer que esto funcione?
usa setTimeout() . prueba el siguiente código.
add_action( 'woocommerce_before_checkout_form', 'check_category_in_cart' ); function check_category_in_cart() { $cat_in_cart = false; foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { if ( has_term( 'test', 'product_cat', $cart_item['product_id'] ) ) { $cat_in_cart = true; break; } } if ( $cat_in_cart ) { ?> <script> jQuery(document).ready(function($) { setTimeout(function(){ $('#pop-up').trigger('click'); }, 10); }); </script> <?php } } jQuery(document).ready(function($) { setTimeout(function(){ $('#pop-up').trigger('click'); }, 10); jQuery(document).on('click','#pop-up',function(){ alert('trigger'); }); }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button id="pop-up">popup</button>PHP espera un código php válido en las etiquetas <?php ?> , pero está colocando JavaScript, por lo que debe cerrar la etiqueta PHP antes de <script> y abrir una nueva después de </script> . De lo contrario, su código jQuery está bien.
if ( $cat_in_cart ) { ?> <script> jQuery(function() { $('#pop-up').trigger('click'); }); </script> <?php }Motivo necesario para comprobar.
if ( $cat_in_cart ) { ?> <script> jQuery(document).ready(function($) { $('#pop-up').trigger('click'); }); </script> <?php }Si todo está bien, puedes intentarlo.
jQuery(document).ready(function($) { var timeInterVal = setInterval(CheckId, 1000); CheckId function(){ var id = $("#pop-up"); if(id.length!=0){ $('#pop-up').trigger('click'); clearInterval(timeInterVal); } } });Esto funcionará si su identificación no se encuentra una vez que la colocó, esto detendrá el temporizador y activará la ventana emergente. Gracias.