- Dónde se configura
- Las opciones predefinidas y su valoración
- Etiquetas disponibles para la estructura personalizada
- Estructuras recomendadas según el tipo de sitio
- Bases de categoría y etiqueta
- El problema de with_front
- Cambiar la estructura de permalinks en un sitio con contenido publicado
- Para profundizar
La configuración de permalinks en WordPress define la estructura de URL que tendrán todas las entradas y páginas del sitio. Es, junto con la definición de los Custom Post Types y las taxonomías, la decisión técnica de mayor impacto en la arquitectura de la información de un sitio WordPress.
Lo que la hace especialmente crítica es su irreversibilidad práctica: cambiar la estructura de permalinks después de tener contenido publicado requiere redirecciones masivas para cada URL existente. Hacerlo bien antes de publicar el primer contenido es incomparablemente más barato que corregirlo después.
Dónde se configura
Ajustes > Enlaces permanentes en el panel de administración de WordPress.
Esta pantalla tiene dos partes: la estructura de URLs para las entradas (el selector con opciones predefinidas y el campo personalizado) y las bases para las categorías y etiquetas.
Las opciones predefinidas y su valoración
WordPress ofrece seis opciones predefinidas:
Simple (/?p=123): El identificador numérico de base de datos directamente como parámetro. Es la configuración por defecto en instalaciones nuevas. No debe usarse nunca en un sitio real: no es descriptiva, no refleja ninguna jerarquía y no aporta información al usuario.
Día y nombre (/2024/11/01/nombre/): La fecha completa más el slug. Envejece el contenido visualmente y produce URLs muy largas. No recomendada.
Mes y nombre (/2024/11/nombre/): Mes y año más el slug. Menos granular que la anterior pero con los mismos problemas. No recomendada.
Numérica (/archives/123): Similar a la opción simple pero con un prefijo de texto. No recomendada.
Nombre de la entrada (/nombre-de-la-entrada/): El slug directamente en la raíz. Es la opción más limpia y la más recomendada cuando el blog es el contenido principal del sitio. Si hay otros tipos de contenido, puede generar colisiones de slug entre tipos distintos.
Estructura personalizada: Permite definir un patrón propio usando etiquetas de WordPress. Es la opción más flexible.
Etiquetas disponibles para la estructura personalizada
| Etiqueta | Valor | Recomendación |
|---|---|---|
%postname% | Slug del contenido | Siempre incluir |
%category% | Categoría principal | Solo si la taxonomía es estable |
%year% | Año de publicación | No recomendado |
%monthnum% | Mes de publicación | No recomendado |
%day% | Día de publicación | No recomendado |
%author% | Nombre de usuario del autor | No recomendado |
%post_id% | ID numérico | No recomendado |
Estructuras recomendadas según el tipo de sitio
Blog puro (todo el contenido es editorial):
/%postname%/
El slug directamente en la raíz. URLs cortas, limpias, sin prefijo innecesario.
Sitio con blog y otros tipos de contenido:
/blog/%postname%/
El prefijo /blog/ diferencia las entradas de los CPT y las páginas estáticas. Requiere configurar with_front => false en los CPT para que no hereden el prefijo.
Sitio con categorías como parte de la identidad de la URL:
/%category%/%postname%/
La categoría principal forma parte de la URL. Útil cuando la taxonomía es muy estable y la categoría aporta contexto real. Inconveniente: si una entrada cambia de categoría, la URL cambia y requiere redirección.
Bases de categoría y etiqueta
En la misma pantalla de configuración de permalinks, hay dos campos para definir el prefijo de las URLs de archivo taxonómico:
Base de categorías: Por defecto category → /category/nombre/. Recomendación para sitios en español: cambiarlo a categoria → /categoria/nombre/.
Base de etiquetas: Por defecto tag → /tag/nombre/. Recomendación para sitios en español: cambiarlo a etiqueta → /etiqueta/nombre/.
Este cambio también debe hacerse antes de publicar contenido. Cambiarlo después modifica todas las URLs de archivo de categorías y etiquetas.
El problema de with_front
Cuando se registran Custom Post Types con rewrite => array('slug' => 'productos'), WordPress añade por defecto el “front” de la estructura de permalinks delante del slug del CPT.
Si la estructura de permalinks es /blog/%postname%/, el front es /blog/. Con with_front => true (el valor por defecto), las URLs del CPT serían /blog/productos/nombre/ en lugar de /productos/nombre/.
La mayoría de veces esto no es lo deseado. La solución es registrar el CPT con with_front => false:
'rewrite' => array(
'slug' => 'productos',
'with_front' => false,
),
Cambiar la estructura de permalinks en un sitio con contenido publicado
Si es inevitable cambiar la estructura de permalinks en un sitio existente, el proceso correcto es:
- Inventariar todas las URLs existentes antes del cambio. Exportar desde Google Search Console o con un rastreador (Screaming Frog, Sitebulb).
- Implementar las redirecciones 301 antes o simultáneamente al cambio. El plugin Redirection o configuración directa en el servidor (Nginx, Apache) son las opciones habituales.
- Actualizar el sitemap inmediatamente después del cambio.
- Verificar en Google Search Console que no hay errores de rastreo masivos en los días siguientes.
- Actualizar los enlaces internos que apuntaban a las URLs antiguas. Los plugins de búsqueda y reemplazo en base de datos (como Better Search Replace) facilitan esta tarea.