Avisos
Vaciar todo

[Resuelto] CAmpo de texto en producto  

 
María del Carmen
 María del Carmen
Estimable Member

Buenos días! 

Aquí estoy de nuevo con dudas. 

Sabéis si hay alguna forma de añadir un campo de texto en un producto. 

Como veis en la URL es producto personalizable y me gustaría que al hacer el pedido añadieran el texto directamente para no tener que añadirlo al final del pedido.

Hay alguna forma sencilla de hacerlo? 

Contenido solo visible a usuarios registrados

Respondido : 15/12/2022 12:31 pm
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Maria del Carmen

Para añadir campos personalizados puedes utilizar el siguiente plugin:

-> https://es.wordpress.org/plugins/woo-custom-product-addons/

Una Vez instalado:

.- Accede a Productos -> custom product addons y añade un nuevo Formulario.

Tienes diferentes Widgets para poder añadir en el formulario, en este caso solo necesitarías un Área de texto:

.-Añade el Área de texto y guardar el formulario:

screenshot mary52.webempresa.eu 2022.12.15 14 05 05

.-Edita el producto y veras que tienes una nueva opción " Opciones personalizadas de producto "

.- Selecciona el formulario que creaste y guardas el producto.

screenshot mary52.webempresa.eu 2022.12.15 14 08 17

Si accedes al producto verás que hay una nueva área de texto donde el usuario puede añadir el texto que quiera:

screenshot mary52.webempresa.eu 2022.12.15 14 10 18

 

 

Si no quieres utilizar plugin puedes hacerlo con una función, el problema es que se mostraría en todos los productos o en los productos de la categoria que tu le indiques:

// show custom field in product page
function we_display_field() {

	// Optional validation for specif category
	// global $product;
	// $categories = $product->get_category_ids();
	// if ( ! in_array(34, $categories )) return;

	echo '<div class="custom-field-wrapper">
			<label for="title-field">Ingresa algún texto:</label>
			<input type="text" id="we-custom-field" name="we-custom-field" value="">
		 </div><br /><hr />';
}
add_action( 'woocommerce_before_add_to_cart_button', 'we_display_field', 10, 0 );

// Validate custom field
function we_field_validation( $passed, $product_id, $quantity  ) {
	if( isset( $_REQUEST['we-custom-field'] ) && empty($_REQUEST['we-custom-field'])) {
		$passed = false;
		wc_add_notice( 'Ingresa algún texto personalizado', 'error' );
	}
	return $passed;
}
add_filter( 'woocommerce_add_to_cart_validation', 'we_field_validation', 10, 3 );


// Add field data to the cart
function we_add_field_to_cart( $cart_item_data, $product_id, $variation_id ) {
	if( ! empty( $_REQUEST['we-custom-field'] ) ) {
		$cart_item_data['we-custom-field'] = sanitize_text_field($_REQUEST['we-custom-field']);
	}
	return $cart_item_data;
}
add_filter( 'woocommerce_add_cart_item_data', 'we_add_field_to_cart', 10, 3 );


// Display field in the cart
function we_display_field_to_cart( $item_name, $cart_item, $cart_item_key ) {
	if ( isset($cart_item['we-custom-field']) ){
		$item_name .= sprintf("<p>Texto: %s </p>", $cart_item['we-custom-field']);
	}
	return $item_name;
}
add_filter( 'woocommerce_cart_item_name', 'we_display_field_to_cart', 10, 3 );


// Add custom field to order
function we_add_field_to_order( $item, $cart_item_key, $values, $order ) {
	if ( isset( $values['we-custom-field'] )){
		$item->add_meta_data( 'Texto', $values['we-custom-field'], true );
	}
}
add_action( 'woocommerce_checkout_create_order_line_item', 'we_add_field_to_order', 10, 4 );

 

Puedes añadir el código en el archivo funtions.php que encontrarás en wp-content -> tu_plantilla o si utilizas algún plugin para añadir código como puede ser Code Snippets:

-> https://www.webempresa.com/blog/que-son-los-snippet-y-como-introducir-nuevas-funcionalidades-en-tu-wordpress.html

 

Un Saludo

 

Respondido : 15/12/2022 1:18 pm

María del Carmen
 María del Carmen
Estimable Member

Perfecto, muchas gracias!!

Respondido : 15/12/2022 1:22 pm
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Maria del Carmen.

Nada, Gracias a ti.

Cualquier consulta que tengas no dudes en comunicarlo.

 

Un saludo

Respondido : 15/12/2022 1:38 pm