En el desarrollo y administración de tiendas en línea con WooCommerce, a menudo surgen necesidades específicas que no siempre se tienen que resolver con los plugins disponibles. Me he encontrado con una de estas situaciones en la que me pedían una exportación de categorías de productos con su nombre y URL, una funcionalidad especialmente útil para equipos de SEO, marketing o analítica de datos.
En este artículo, veremos un snippet de código que permite exportar fácilmente todas estas categorías de productos de WooCommerce a un archivo CSV. También explicaré en qué escenarios resulta útil esta solución y cómo implementarla.
¿Qué hace este snippet de código?
El código que veremos a continuación permite a los administradores del sitio generar un archivo CSV que incluye:
- El nombre de la categoría.
- La URL de la categoría.
El archivo se descarga directamente desde el navegador con tan solo acceder a una URL específica en el escritorio de administración de WordPress.
Características principales del snippet
- Exportación directa de las categorías en formato CSV.
- Incluye tanto el nombre como el enlace completo de las categorías. ¡Ojo! puedes incorporar otras columnas con más información de las categorías.
- Función accesible únicamente para usuarios con permisos de administración.
Aquí está el código completo que puedes añadir al archivo functions.php
de tu tema activo o, preferiblemente, a un plugin de funciones personalizado:
function export_product_categories_to_csv() {
// Verificar si el usuario tiene permisos y si se llama al exportador
if (!current_user_can('manage_options')) {
return;
}
if (isset($_GET['export_categories']) && $_GET['export_categories'] === 'true') {
// Asegurarnos de cargar las dependencias necesarias
if (!function_exists('get_terms') || !function_exists('get_term_link')) {
wp_die('Funciones necesarias no disponibles.');
}
// Obtener las categorías de productos
$categories = get_terms(array(
'taxonomy' => 'product_cat',
'hide_empty' => false,
));
if (is_wp_error($categories)) {
wp_die('Error obteniendo las categorías.');
}
// Establecer encabezados para el archivo CSV
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=categories.csv');
$output = fopen('php://output', 'w');
// Encabezados del CSV
fputcsv($output, array('Category Name', 'Category URL'));
// Escribir las categorías al archivo
foreach ($categories as $category) {
$category_name = $category->name;
$category_url = get_term_link($category);
fputcsv($output, array($category_name, $category_url));
}
fclose($output);
exit;
}
}
add_action('admin_init', 'export_product_categories_to_csv');
Tips para programadores
Las funciones fopen
, fputcsv
y fclose
son parte de PHP, no de WordPress directamente. Estas funciones están diseñadas para trabajar con archivos, específicamente para abrir, escribir y cerrar flujos de datos.
Son herramientas muy útiles para manipular archivos de texto, como CSV, en el servidor.
A continuación, te explico cómo funcionan, sus parámetros y casos de uso:
fopen()
se utiliza para abrir un archivo o iniciar un flujo de datos (como php://output
) y asociarlo con un recurso que puede ser utilizado para lectura, escritura o ambas cosas.
fopen(filename, mode, use_include_path = false, context = null);
filename
: Nombre o ruta del archivo a abrir. También puede ser un flujo especial comophp://output
para escribir datos directamente al navegador.mode
: Especifica cómo se abrirá el archivo:'r'
: Solo lectura.'r+'
: Lectura y escritura.'w'
: Solo escritura. Si el archivo existe, lo sobrescribe; si no, lo crea.'w+'
: Lectura y escritura. Igual que'w'
.'a'
: Escribe al final del archivo, preservando el contenido existente.'a+'
: Lectura y escritura, pero escribe al final.'x'
: Solo escritura. Si el archivo existe, falla.'x+'
: Lectura y escritura, pero falla si el archivo existe.
use_include_path
(opcional): Si estrue
, busca el archivo en elinclude_path
configurado en PHP.context
(opcional): Especifica un contexto para modificar las operaciones del archivo (avanzado).
fputcsv()
escribe una línea en un archivo CSV, convirtiendo un array en formato separado por comas.
fputcsv(file, fields, delimiter = ',', enclosure = '"', escape_char = '\\');
file
: El recurso del archivo devuelto porfopen
.fields
: Un array con los valores que se escribirán en la línea del archivo CSV.delimiter
(opcional): El separador de campos (por defecto,,
).enclosure
(opcional): Caracter usado para envolver valores que contienen el delimitador o caracteres especiales (por defecto, comillas dobles"
).escape_char
(opcional): Caracter de escape para manejar caracteres especiales dentro de valores (por defecto,\
).
fclose()
cierra un archivo abierto con fopen
. Es importante cerrar los archivos para liberar recursos del servidor.
fclose(file);
file
: El recurso del archivo devuelto porfopen
.
¿Buscas un desarrollador profesional para acompañarte con tu proyecto?
Me especializo en desarrollar sitios webs avanzados, programando soluciones personalizadas para proyectos web.
¿Cómo utilizamos este snippet?
Paso 1: Agregar el código al sitio
Puedes añadir este código a:
- El archivo
functions.php
de tu tema activo (no recomendado si el tema se actualiza frecuentemente). - Un plugin de funcionalidades personalizado, lo que es una opción más segura.
Paso 2: Generar el CSV
- Inicia sesión como administrador en el área de administración de WordPress.
- Navega a la URL de tu sitio con el parámetro
?export_categories=true
. Por
https://tusitio.com/wp-admin/?export_categories=true
- Al cargar la página, el navegador descargará automáticamente un archivo llamado
categories.csv
.
Paso 3: Compartir el archivo
El archivo generado puede compartirse con otros equipos para análisis, optimización SEO o cualquier otra tarea que requiera información detallada de las categorías.
Caso Práctico: Uso para Equipos de SEO
Este snippet es especialmente útil para los encargados de SEO de una tienda en línea.
Un especialista en SEO necesita optimizar las páginas de categoría de productos añadiendo meta descripciones, optimizando títulos y mejorando la estructura de URLs. Sin embargo, no tiene acceso al panel de administración de WordPress y requiere un listado completo de las categorías con sus enlaces.
El administrador de la tienda utiliza este snippet para generar rápidamente un archivo CSV con la información necesaria y se lo compartirá al especialista de SEO.
Beneficios
- Rapidez: No es necesario buscar cada categoría manualmente.
- Precisión: Las URLs se generan automáticamente sin riesgo de errores.
- Flexibilidad: El archivo CSV puede importarse a herramientas como Excel o Google Sheets para análisis.
Otros Escenarios de Uso
- Botón para Importar/exportar datos de un Custom Post Type: Muy útil para programadores de plugins.
- Auditorías internas de la tienda: Generar un listado completo de categorías para revisar nombres, enlaces y asegurar que cumplen con las estrategias de branding y marketing.
- Migración de datos: Si planeas migrar tu tienda WooCommerce a otra plataforma, este CSV puede ser un buen punto de partida para importar categorías.
- Análisis en herramientas externas: El archivo CSV puede importarse a herramientas como Screaming Frog o Ahrefs para analizar la estructura y calidad de las URLs.
- Actualización masiva de contenido: Los equipos de contenido pueden usar esta información para planificar la actualización de descripciones, títulos o imágenes de las categorías.
- Generar archivos CSV dinámicos para exportar datos: Muy útil para generar reportes, como listados de productos, usuarios o transacciones. Por ejemplo: Exportar pedidos de WooCommerce.
- Procesar grandes cantidades de datos: Puedes leer y escribir archivos en lotes para manejar grandes datasets que no caben en memoria.
- Crear logs personalizados: Registrar actividades o errores en un archivo de texto/CSV para auditorías.
- Importar/exportar datos entre sistemas: Crear un puente entre WordPress y sistemas externos que acepten datos en formato CSV.
- Transmitir datos directamente al navegador: Usar flujos como
php://output
permite enviar datos dinámicos como descargas.
Conclusión
Este snippet es una solución sencilla y práctica para exportar categorías de productos en WooCommerce. Aunque existen plugins que ofrecen funcionalidades similares, crear tu propia solución personalizada te da mayor control y evita dependencias innecesarias.
Si trabajas con equipos de SEO, marketing o necesitas auditar tu tienda, este método es una excelente herramienta para ahorrar tiempo y minimizar errores. ¡Pruébalo y personalízalo según tus necesidades!
Si tienes dudas sobre cómo implementarlo o quieres extender su funcionalidad, no dudes en preguntar. 😊