Hola 👋
Voy a tener en la web unos productos en concreto que tienen que por lo menos marcar que se han leído las condiciones de uso antes de poder añadirlo al carrito. ¿Hay alguna plugin o manera de que solo en estos productos que menciono aparezca el botón de añadir al carrito como desactivado y que al pulsar un mensaje tipo “He leído comprendo…) se active el botón para que puedan añadirlo a la compra?
Contenido solo visible a usuarios registrados
Hola Álvaro.
Si se podria hacer, Prueba lo siguiente:
.- Añade el siguiente código en el plugin de Fragmentos de código:
add_action( 'woocommerce_before_add_to_cart_button', 'agregar_checkbox_politica' );
function agregar_checkbox_politica() {
global $product;
// IDs de productos específicos donde quieres agregar el checkbox
$productos_con_checkbox = array( 123, 456 ); // Cambia estos IDs por los de tus productos
if ( in_array( $product->get_id(), $productos_con_checkbox ) ) {
echo '<div class="politica-aceptacion">';
echo '<label><input type="checkbox" id="checkbox_politica" /> Acepto las <a href="/politica-de-privacidad">políticas de privacidad</a></label>';
echo '</div>';
}
}
add_action( 'wp_footer', 'desactivar_boton_si_no_acepta_politicas' );
function desactivar_boton_si_no_acepta_politicas() {
global $product;
// IDs de productos específicos donde quieres agregar el checkbox
$productos_con_checkbox = array( 123, 456 ); // Cambia estos IDs por los de tus productos
if ( in_array( $product->get_id(), $productos_con_checkbox ) ) {
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
// Desactivar el botón inicialmente
var boton_anadir = $('.single_add_to_cart_button');
boton_anadir.prop('disabled', true);
// Activar o desactivar el botón según el estado del checkbox
$('#checkbox_politica').change(function() {
if($(this).is(':checked')) {
boton_anadir.prop('disabled', false); // Activar botón si el checkbox está marcado
} else {
boton_anadir.prop('disabled', true); // Desactivar botón si el checkbox no está marcado
}
});
});
</script>
<?php
}
}
add_filter( 'woocommerce_add_to_cart_validation', 'validar_checkbox_politica', 10, 2 );
function validar_checkbox_politica( $passed, $product_id ) {
// IDs de productos específicos donde quieres agregar el checkbox
$productos_con_checkbox = array( 123, 456 ); // Cambia estos IDs por los de tus productos
if ( in_array( $product_id, $productos_con_checkbox ) && ! isset( $_POST['checkbox_politica'] ) ) {
wc_add_notice( __( 'Debes aceptar las políticas para añadir este producto al carrito.', 'woocommerce' ), 'error' );
$passed = false;
}
return $passed;
}
Reemplaza los IDs de productos en el array productos_con_checkbox por los IDs de los productos en los que deseas mostrar el checkbox.
Los IDs de los productos los puedes ver editando el producto:
Personaliza el texto del checkbox y el enlace a tus políticas de privacidad según lo necesites
Revisa si es lo que buscas y nos comentas.
Un Saludo