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