Cómo establecer el importe mínimo de un campo de precio

Introducción

¿Le gustaría establecer un importe mínimo para un campo de precio en su WPForms? Usando un pequeño snippet PHP puede fácilmente establecer un monto mínimo para el campo de precio de Artículo Único que es Definido por el Usuario. En este tutorial, le guiaremos a través de cada paso para lograrlo.

Creación del formulario

En primer lugar, deberá crear un formulario y añadir un campo de precio de artículo único al formulario. Una vez añadido el campo, asegúrese de que el Tipo de artículo está definido como Definido por el usuario.

Si necesita ayuda para configurar un formulario con el campo Elemento único, consulte este artículo.

cree un nuevo formulario a, añada un único campo de precio de artículo a su formulario y establezca 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 para comprobar la cantidad mínima que necesitamos.

Para añadir un nombre de clase CSS a un campo de formulario, seleccione el botón Artículo único y pulse el botón Avanzado pestaña. Dentro de la pestaña Clases de CSSintroduzca el set-minimum y guarde el formulario.

añadir el nombre de la clase css al campo de elemento único

Añadir el fragmento para fijar un importe mínimo

En este último paso, tendrá que añadir el fragmento a su sitio. Si necesitas ayuda para añadir snippets 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 snippet se ejecutará automáticamente para todos los formularios pero sólo se ejecutará en los campos que tengan el nombre de clase CSS set-minimum. Si la cantidad introducida no alcanza el mínimo, se producirá un error cuando se envíe el formulario.

ahora hay un error de importe mínimo cuando se envía el formulario.

¡Y eso es todo lo que necesitas! ¿Quiere saber cómo ocultar este importe de las notificaciones por correo electrónico? Consulte 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 en mi sitio?

A: Si este error no detiene el envío del formulario, compruebe que ha introducido el nombre de la clase CSS en el campo correcto.

añadir el nombre de la clase css al campo de elemento único

P: ¿Cómo puedo fijar un importe máximo?

A: Para utilizar un fragmento similar para establecer un importe máximo, primero tendrá que actualizar el campo Clases de CSS nombre a set-maximum de la misma manera que en el paso anterior.

A continuación, añada este fragmento a su sitio web.

/**
 * 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 );