Skip to content

Todo para WordPress, el desarrollo web — y mucho más

🔖 Cómo habilitar etiquetas en páginas de WordPress

🔖 Cómo habilitar etiquetas en páginas de WordPress

Las páginas de WordPress no admiten etiquetas de fábrica, y esto resulta molesto justo hasta que entiende por qué se hizo así. Una página en WordPress es técnicamente un tipo de contenido personalizado al que simplemente no se le asigna la taxonomía post_tag. Los desarrolladores del núcleo mantuvieron las etiquetas solo para las entradas, tratando las páginas como contenido estático.

Pero en la práctica esta limitación se puede sortear en cinco minutos. Dos métodos: una línea de código en functions.php o un microplugin que puede activar y desactivar sin editar su tema. A continuación encontrará ambas opciones con una explicación de qué sucede exactamente entre bambalinas.

💡 Resumen rápido:

  • Registre la taxonomía post_tag para el tipo de contenido page mediante la función register_taxonomy_for_object_type

  • Añada soporte de etiquetas a los archivos mediante el gancho pre_get_posts para que las páginas aparezcan en los resultados de consulta de etiquetas

  • El código funciona para cualquier tipo de contenido personalizado; solo repita la llamada con el nombre del tipo deseado

  • Todo se empaqueta en un plugin independiente en un minuto: archivo → cabecera del plugin → código → activación

Por qué usar etiquetas en las páginas

Las etiquetas no son solo una nube en la barra lateral. Son un eje de navegación que vincula páginas dispersas en grupos temáticos más rápido que las categorías o los menús.

Las páginas de WordPress a menudo proliferan: contactos, políticas, términos, páginas de destino de servicios, portafolios, documentación. Sin etiquetas, la conexión entre ellas depende únicamente de enlaces manuales en el texto. Con etiquetas, una sola página de «Envíos» termina automáticamente en el grupo de «logística» junto a la página de «Devoluciones», y los visitantes hacen clic en la etiqueta para ver todo lo relacionado.

Para el SEO, las etiquetas en las páginas proporcionan enlazado interno adicional y reducen las tasas de rebote: los usuarios no se van tras la primera página, sino que se sumergen en una colección temática. Además, las etiquetas entran en el mapa del sitio, lo que ayuda a los motores de búsqueda a comprender mejor la estructura.

Método 1: código en functions.php

La ruta más directa es añadir un fragmento al archivo functions.php de su tema activo. Abra wp-content/themes/SU_TEMA/functions.php y pegue el código antes del cierre ?> o al final del archivo:

1/**
2 * Add tag support to WordPress pages.
3 * Code — in functions.php of child theme or via Code Snippets plugin.
4 */
5function sdstudio_add_tags_to_pages() {
6 register_taxonomy_for_object_type( 'post_tag', 'page' );
7}
8add_action( 'init', 'sdstudio_add_tags_to_pages' );
9
10/**
11 * Include pages in tag archive queries.
12 * Without this, pages won't appear on /tag/tag-name/
13 */
14function sdstudio_pages_in_tag_archives( $wp_query ) {
15 if ( $wp_query->get( 'tag' ) ) {
16 $wp_query->set( 'post_type', 'any' );
17 }
18}
19add_action( 'pre_get_posts', 'sdstudio_pages_in_tag_archives' );

Esto es lo que sucede. La función register_taxonomy_for_object_type() vincula la taxonomía existente post_tag al tipo de contenido page. Esta es una función del núcleo de WordPress; documentación en developer.wordpress.org. No crea una taxonomía nueva, solo añade la relación «páginas → etiquetas».

El gancho pre_get_posts modifica la consulta SQL antes de que se ejecute. Cuando WordPress construye una página de archivo de etiquetas (/tag/name/), busca solo entradas del tipo post de forma predeterminada. La línea $wp_query->set( 'post_type', 'any' ) amplía la selección a todos los tipos: páginas, entradas, tipos personalizados.

Después de insertar el código, vaya a cualquier página y aparecerá un bloque de «Etiquetas» en la barra lateral, igual que en las entradas normales. Funciona de inmediato; no necesita vaciar la caché.

Adaptación para tipos de contenido personalizados

Si tiene tipos de contenido personalizados (CPT, por sus siglas en inglés) como portafolios, testimonios o productos que también necesitan etiquetas, añada el mismo número de llamadas a register_taxonomy_for_object_type() dentro de su función init:

1register_taxonomy_for_object_type( 'post_tag', 'portfolio' );
2register_taxonomy_for_object_type( 'post_tag', 'testimonials' );

El nombre del CPT es el segundo argumento, el mismo que se especificó al registrar el tipo mediante register_post_type(). No se necesitan ediciones adicionales en pre_get_posts: 'any' ya incluye todos los tipos registrados.

Método 2: un plugin independiente

Editar functions.php directamente es una solución que funciona, pero es frágil. Cambie de tema y el código desaparece, llevándose consigo las etiquetas de las páginas. Para quienes gestionan varios sitios o cambian de tema con frecuencia, es más fiable mover el fragmento a un plugin independiente.

Cree el archivo wp-content/plugins/sdstudio-tags-for-pages.php con este contenido:

1<?php
2/**
3 * Plugin Name: Tags for Pages
4 * Description: Enables post tags on WordPress pages and custom post types
5 * Version: 1.0
6 * Author: SDStudio
7 * License: GPL-2.0+
8 */
9
10// Direct access — forbidden
11if ( ! defined( 'ABSPATH' ) ) {
12 exit;
13}
14
15// Tags → pages
16function sdstudio_tags_for_pages() {
17 register_taxonomy_for_object_type( 'post_tag', 'page' );
18}
19add_action( 'init', 'sdstudio_tags_for_pages' );
20
21// Pages → tag archive
22function sdstudio_pages_in_tag_queries( $wp_query ) {
23 if ( ! is_admin() && $wp_query->is_main_query() && $wp_query->get( 'tag' ) ) {
24 $wp_query->set( 'post_type', 'any' );
25 }
26}
27add_action( 'pre_get_posts', 'sdstudio_pages_in_tag_queries' );

La diferencia con el primer método es la comprobación ! is_admin() && $wp_query->is_main_query(). Garantiza que las consultas del área de administración no se vean afectadas: pre_get_posts se ejecuta en todas partes, incluida la lista de páginas del escritorio, y sin esta comprobación puede obtener un comportamiento inesperado en la administración al filtrar.

El archivo está listo; vaya a Plugins, busque «Tags for Pages» y actívelo. Eso es todo. Cuando cambie de tema, el plugin permanece activo y las etiquetas no desaparecen. En multisitio, el plugin puede activarse por sitio o activarse en red para toda la red.

Método 3: plugins ya preparados del directorio

Si no quiere escribir código, las soluciones ya preparadas de WordPress.org se encargan de la tarea. Añaden no solo etiquetas, sino también categorías para las páginas, además de una interfaz de gestión.

Add Categories to Pages es un plugin ligero que habilita tanto categorías como etiquetas para las páginas con una sola casilla de verificación. Sin ajustes, sin anuncios. Adecuado cuando solo necesita que las cosas funcionen sin pantallas adicionales.

Aquí tiene una demostración en video de cómo añadir etiquetas a las páginas mediante código y mediante plugin, 4 minutos, todos los pasos mostrados en tiempo real:

Punto clave: los plugins de terceros traen código y ganchos adicionales. Si su sitio ya está cargado con una docena de plugins, uno más es un punto de fallo más. El código de los métodos 1 y 2 pesa apenas unos bytes y no añade consultas a la base de datos más allá de las estándar.

⁉️🤔 Preguntas frecuentes

¿Funciona esto en multisitio? Sí, el código es universal. Puede activar el plugin por sitio o habilitarlo para toda la red mediante «Activar en red».

En WordPress multisitio, el código funciona de forma idéntica en todos los sitios de la red. La función register_taxonomy_for_object_type() está vinculada a la taxonomía post_tag, que existe por separado en cada sitio de la red, por lo que las etiquetas no se solapan entre sitios. Para cada sitio hijo, las etiquetas en las páginas se habilitan de forma independiente: active el plugin en un sitio y las etiquetas aparecerán solo allí.

¿Necesito actualizar los enlaces permanentes después de insertar el código? No, la estructura de URL no cambia. Las etiquetas en las páginas no añaden nuevas reglas de reescritura.

WordPress almacena la relación «página, etiqueta» en la tabla wp_term_relationships, la misma que se usa para las entradas. No se ve afectada ninguna regla de reescritura: el archivo de etiquetas ya existe (/tag/name/), y pre_get_posts simplemente incluye las páginas en su consulta. No necesita tocar los enlaces permanentes; todo funciona inmediatamente después de activar el código.

¿Desaparecerán las etiquetas al cambiar de tema? Depende del método. El código en el functions.php del tema hará que desaparezcan. El código en un plugin o en Code Snippets las conservará.

Al cambiar de tema, WordPress carga un nuevo functions.php, por lo que el fragmento del tema antiguo deja de ejecutarse y la metabox de etiquetas en las páginas desaparece. Sin embargo, las relaciones «página, etiqueta» en la base de datos no se eliminan. Simplemente restaure el código (en el nuevo tema o mediante un plugin) y todas las etiquetas previamente asignadas reaparecerán en la administración.

¿Puedo asignar etiquetas mediante programación al importar páginas? Sí, mediante wp_set_object_terms( $page_id, array( 'tag1', 'tag2' ), 'post_tag' ).

La función wp_set_object_terms() acepta un ID de página, un array de nombres de etiqueta y el nombre de la taxonomía. Si una etiqueta con ese nombre no existe, WordPress la creará automáticamente. Esto es conveniente durante la migración: un script recorre todas las páginas y asigna etiquetas desde un archivo CSV o un CMS antiguo. Es importante ejecutar el script después de init, de lo contrario la taxonomía aún no está registrada.

¿Y la nube de etiquetas: aparecerán las páginas en ella? Sí, el widget estándar «Nube de etiquetas» recogerá las etiquetas de las páginas sin configuración adicional.

El widget wp_tag_cloud() recopila todos los objetos de la taxonomía post_tag de forma predeterminada, independientemente del tipo de contenido. Tan pronto como una página tiene al menos una etiqueta, entra en la nube en igualdad de condiciones con las etiquetas de las entradas. La frecuencia también se calcula correctamente: una etiqueta en tres páginas y dos entradas produce un peso de «5» y se muestra más grande.

Qué elegir: código o plugin

La elección concreta depende de su escenario, no de una «respuesta correcta».

A los propietarios de un solo sitio que no cambian de tema durante años les bastará con un fragmento en functions.php: copiar, pegar, listo. Los freelancers con una docena de sitios de clientes encuentran más conveniente un plugin: envían el archivo zip al cliente o lo activan en un nuevo proyecto en segundos. Quienes ya usan Code Snippets o WPCodeBox pueden simplemente añadir el fragmento a su colección; no se perderá con las actualizaciones del tema y no requiere un plugin independiente.

Si necesita más que etiquetas (categorías, taxonomías personalizadas, filtrado avanzado), eche un vistazo a los plugins ya preparados de WordPress.org. Pero para la tarea de «habilitar etiquetas en las páginas», bastan siete líneas de código. Todo lo demás es excesivo.

A continuación, configure su estructura de etiquetas: piense en 5-7 temas clave para las páginas y asígnelos. En un mes, la nube de etiquetas mostrará qué temas del sitio están más fuertemente conectados.