¡Atención!

Este artículo contiene código PHP y está destinado a desarrolladores. Ofrecemos este código como cortesía, pero no proporcionamos soporte para personalizaciones de código o desarrollo de terceros.

Para obtener ayuda adicional, consulta el tutorial de WPBeginner sobre cómo añadir código personalizado.

Descartar

Cómo establecer una cantidad mínima para un campo de precio

Introducción

¿Te gustaría establecer una cantidad mínima para un campo de precio en tu WPForms? Usando un pequeño fragmento de PHP puedes establecer fácilmente una cantidad mínima para el campo de precio de Artículo único que es Definido por el usuario. En este tutorial, te guiaremos paso a paso sobre cómo lograr esto.

Creación del formulario

Primero, necesitarás crear un formulario y añadir un campo de precio de Artículo único al formulario. Una vez que hayas añadido el campo, asegúrate de que el Tipo de artículo esté configurado como Definido por el usuario.

Si necesitas ayuda para configurar un formulario con el campo de Artículo único, consulta este artículo.

crear un nuevo formulario, añadir un campo de precio de artículo único a tu formulario y establecer el tipo de artículo como definido por el usuario

Añadir la clase CSS

A continuación, vamos a añadir una clase CSS a este campo para que active el fragmento que comprueba la cantidad mínima que requerimos.

Para añadir un nombre de clase CSS a un campo del formulario, selecciona el campo de Artículo único y haz clic en la pestaña Avanzado. Dentro de Clases CSS, introduce set-minimum y guarda el formulario.

añadir el nombre de la clase CSS al campo de artículo único

Añadir el fragmento para establecer una cantidad mínima

En este último paso, necesitarás añadir el fragmento a tu sitio. Si necesitas ayuda para añadir fragmentos a tu sitio, consulta este tutorial.

/**
 * Set a minimum amount price field.
 *
 * @link https://wpforms.com/developers/how-to-set-minimum-amount-for-a-price-field/
 */

function wpf_set_minimum_amount_input( $field_id, $field_submit, $form_data ) {
 
    // This snippet will run for all forms
    $form_id = $form_data[ 'id' ];
 
    // And it will run for all fields with the CSS class of set-minimum
    $fields  = $form_data[ 'fields' ];
     
     
	// Define your minimum amount here.
	$minimum_amount = 5;
 
    // Check if field has custom CSS class configured
    if ( !empty( $fields[ $field_id ][ 'css' ] ) ) {
 
        $classes = explode( ' ', $fields[$field_id][ 'css' ] );
 
        if ( in_array( 'set-minimum', $classes ) ) {
 
            if ( $minimum_amount > (float) wpforms_sanitize_amount( $field_submit ) ) {
 
                wpforms()->process->errors[ $form_id ][ $field_id ] = __( 'Minimum amount is $' . $minimum_amount . '.', 'plugin-domain' );
 
                return;
            }
        }
    }
}
add_action( 'wpforms_process_validate_payment-single', 'wpf_set_minimum_amount_input', 10, 3 );

Este fragmento se ejecutará automáticamente para todos los formularios, pero solo se ejecutará en los campos que tengan el nombre de clase CSS set-minimum. Si la cantidad introducida no cumple el mínimo, se producirá un error al enviar el formulario.

ahora hay un error de cantidad mínima cuando se envía el formulario.

¡Y eso es todo lo que necesitas! ¿Te gustaría saber cómo ocultar esta cantidad en las notificaciones por correo electrónico? Consulta nuestro tutorial sobre Cómo ocultar el valor del precio del artículo en las notificaciones por correo electrónico.

Preguntas frecuentes

P: ¿Por qué no funciona esto en mi sitio?

R: Si este error no está impidiendo el envío de tu formulario, comprueba que has introducido el nombre de la clase CSS en el campo correcto.

añadir el nombre de la clase CSS al campo de artículo único

P: ¿Cómo establezco una cantidad máxima?

R: Para usar un fragmento similar para establecer una cantidad máxima, primero necesitarás actualizar el nombre de Clases CSS a set-maximum de la misma manera que lo hiciste en el paso anterior.

Luego, simplemente añade este fragmento a tu sitio.

/**
 * Set a maximum amount price field.
 *
 * @link https://wpforms.com/developers/how-to-set-minimum-amount-for-a-price-field/
 */
 
function wpf_set_maximum_amount_input( $field_id, $field_submit, $form_data ) {
 
    // This snippet will run for all forms
    $form_id = $form_data[ 'id' ];
 
    // And it will run for all fields with the CSS class of set-minimum
    $fields  = $form_data[ 'fields' ];
     
     
	// Define your minimum amount here.
	$maximum_amount = 5000;
 
    // Check if field has custom CSS class configured
    if ( !empty( $fields[ $field_id ][ 'css' ] ) ) {
 
        $classes = explode( ' ', $fields[ $field_id ][ 'css' ] );
 
        if ( in_array( 'set-maximum', $classes ) ) {
 
            if ( $maximum_amount < (float) wpforms_sanitize_amount( $field_submit ) ) {
 
                wpforms()->process->errors[ $form_id ][ $field_id ] = __( 'Maximum amount is $' . $maximum_amount . '.', 'plugin-domain' );
 
                return;
            }
        }
    }
}
add_action( 'wpforms_process_validate_payment-single', 'wpf_set_maximum_amount_input', 10, 3 );