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
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:
.-Edita el producto y veras que tienes una nueva opción " Opciones personalizadas de producto "
.- Selecciona el formulario que creaste y guardas el producto.
Si accedes al producto verás que hay una nueva área de texto donde el usuario puede añadir el texto que quiera:
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:
Un Saludo
Perfecto, muchas gracias!!
Hola Maria del Carmen.
Nada, Gracias a ti.
Cualquier consulta que tengas no dudes en comunicarlo.
Un saludo