Agregar campos personalizados a productos y pedidos en WooCommerce

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.

¡Más Snippets, Más Opciones!

Al compartir, motivamos a más desarrolladores a contribuir. Ayúdanos a hacer de este directorio un punto de referencia en snippets.

Facebook
Twitter
LinkedIn
Telegram
WhatsApp

¿Cómo implementar este snippet en la web?

Tienes 2 opciones, una de ellas es mediante plugin y la otra pegando el código en tu web.

1. Añadir snippet con plugin

code-snippets

Code Snippets

Por Code Snippets Pro

  1. Descarga el plugin o búscalo en el repositorio de plugins de Wordpress e instálalo en tu web.
  2. En el menú lateral del Escritorio verás un nuevo enlace (Fragmetos de código). Ves a Fragmentos de código > Añadir nuevo.
  3. Se abrirá una página con un título, bloque de código, descripción y etiquetas, rellena el título con el que quieras guardarlo, ejemplo: Añadir Google Analytics.
  4. En la parte código verás que está activo PHP, ahí pega el código del snippet
  5. La descripción y las etiquetas solo son para tu información y para que luego encuentres más fácil los snippets.
  6. Publicar y activar el snippet.

2. Añadir snippet en el functions.php

Diseño web con WordPress

Accede al archivo functions.php de tu tema o tema hijo, pega el snippet y guarda el archivo.

Lo encontrarás en Apariencia > Editor de archivos de tema, pinchas sobre el enlace  functions.php y pegas el código al final del archivo.

Relacionados: