WooCommerce es una plataforma versátil que permite una gran cantidad de personalizaciones. Una de esas funcionalidades es la capacidad de añadir campos personalizados a los productos. En este artículo, te mostraré cómo puedes agregar un campo de ‘Aforo’ a tus productos y cómo este dato se reflejará en los pedidos.
Primer Bloque de Código: Añadir y Guardar el Campo de Aforo
El primer bloque de código se encarga de añadir un nuevo campo en la página de edición del producto en WooCommerce. Este campo se llama «Aforo» y permite que introduzcas el número de entradas disponibles para un evento.
// Añadir campo de aforo en la página de edición de productos de WooCommerce function agregar_campo_aforo_a_edicion_producto(){ echo '<div class="options_group">'; // Crear entrada de texto para 'Aforo' woocommerce_wp_text_input( array( 'id' => '_campo_aforo', // ID del campo, importante para localizarlo 'label' => __('Aforo', 'woocommerce'), // Etiqueta del campo 'placeholder' => __('Introduce el aforo del concierto', 'woocommerce'), // Texto de marcador de posición 'desc_tip' => 'true', // Habilitar descripción emergente 'description' => __('Escribe el número de entradas disponibles para el concierto.', 'woocommerce') // Texto de descripción ) ); echo '</div>'; } add_action('woocommerce_product_options_general_product_data', 'agregar_campo_aforo_a_edicion_producto'); // Guardar el valor del campo de aforo function guardar_valor_campo_aforo($post_id){ // Comprobar y sanear el valor del campo de aforo $valor_aforo = isset($_POST['_campo_aforo']) ? sanitize_text_field($_POST['_campo_aforo']) : ''; // Actualizar metadatos del post update_post_meta($post_id, '_campo_aforo', $valor_aforo); } add_action('woocommerce_process_product_meta', 'guardar_valor_campo_aforo');
Este código no sólo añade el campo sino que también guarda su valor. Esto se hace utilizando las acciones woocommerce_product_options_general_product_data
y woocommerce_process_product_meta
.
Segundo Bloque de Código: Mostrar el Campo de Aforo en los Pedidos
El segundo bloque de código muestra el valor del campo de ‘Aforo’ en la página de pedidos, tanto en los detalles del pedido como en la fila de cada producto.
// Mostrar el campo de aforo en la página de pedidos después de los datos del cliente function mostrar_campo_aforo_en_edicion_pedido($order){ $items = $order->get_items(); foreach ($items as $item_id => $item) { $product = $item->get_product(); $valor_aforo = $product->get_meta('_campo_aforo', true); if ($valor_aforo) { echo '<p><strong>' . __('Aforo', 'woocommerce') . ':</strong> ' . $valor_aforo . '</p>'; } } } add_action('woocommerce_admin_order_data_after_order_details', 'mostrar_campo_aforo_en_edicion_pedido'); // Mostrar el campo de aforo en la fila de cada producto en la página de edición de pedidos function mostrar_campo_aforo_en_fila_producto_en_edicion_pedido($item_id, $item, $product){ // Verificar si el tipo de artículo es 'line_item' if ($item->is_type('line_item')) { $product_id = $item->get_product_id(); $valor_aforo = get_post_meta($product_id, '_campo_aforo', true); if ($valor_aforo) { echo '<p><strong>' . __('Aforo', 'woocommerce') . ':</strong> ' . $valor_aforo . '</p>'; } } } add_action('woocommerce_after_order_itemmeta', 'mostrar_campo_aforo_en_fila_producto_en_edicion_pedido', 10, 3);
Esto se hace utilizando las acciones woocommerce_admin_order_data_after_order_details
y woocommerce_after_order_itemmeta
.
Ejemplo: Gestionando el Aforo de un Concierto
Supongamos que estás organizando un concierto y tienes 500 entradas disponibles. Al utilizar estos códigos, podrás ingresar este aforo en el producto y se mostrará en cada pedido que incluya entradas para este evento.
¿Quieres Añadir Otro Campo?
Si deseas añadir otro campo, deberás repetir este proceso, pero cambiando el nombre y ID del campo en el código. Por ejemplo, para un campo de «Edad mínima», podrías usar _campo_edad_minima
como ID y ajustar las etiquetas y descripciones acorde.
Espero que este tutorial te haya sido de utilidad para administrar el aforo de tus eventos en WooCommerce.