Avisos
Vaciar todo

Aceptar Políticas Antes de Añadir al Carrito  

 
Álvaro
 Álvaro
Usuario activo

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

Citar
Respondido : 10/10/2024 3:18 am
Pepe
 Pepe
Soporte CMS Webempresa Admin

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:

Captura de Pantalla 2024 10 10 a las 12.59.44

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

ResponderCitar
Respondido : 10/10/2024 12:04 pm