Índice de contenidos
Ver descripciones en páginas de categorías y etiquetas
WordPress genera de forma automática páginas para ver todas las entradas de una categoría (/category) o de una etiqueta (/tag) . Estas páginas suelen posicionar muy bien Google. Una cosas que podemos hacer para mejorar el posicionamiento de las mismas es añadir un texto orientado al SEO donde expliquemos el contenido de la categoría y de la etiqueta. Esto mejorará mucho la clasificación de estas páginas en las SERPs y además la personalización de la descripción evita que Google considere contenido duplicado a estos resultados.
En la ficha de cada categoría o descripción WordPress muestra una casilla para entrar la descripción de estas taxonomías. Incluso el plugin SEO by Yoast añade sus funciones extendidas a estas fichas. El problema es que la función de visualizar estas descripciones no es nativa de WordPress sino de las plantillas o themes. Es decir, hay plantillas que en la página que muestra los artículos de una categoría o etiqueta muestran el contenido de la descripción y otras plantillas no.
Algunos themes premium como Avada y Bridge se encuentran entre los que no tienen esa función. La solución la ofrece cada proveedor individualmente y suele consistir en añadir un código PHP en los archivos archive.php o categorý.php (según la plantilla) para hacer que se muestre la descripción. El código es el siguiente:
<?php echo category_description(); ?>
Análisis del Sistema de Categorías y Etiquetas en WordPress
Utilizan 3 tablas en la versión 2.5:
- wp_terms, contiene un registro por categoría y etiqueta que se cree
- wp_term_taxonomy, determina que es el term: post_tag, category, link_category. También se utiliza para informar de la categoría padre (parent) y del contador de elementos del term (count)
- wp-terms-relationships, relaciona el registro de wp_term_taxonomy con el objeto que se ha creado sea post, page o link.
Han utilizado la misma tabla para guardar Categorías y Etiquetas: wp_terms.
Creo un nuevo Post con una nueva categoría: AAA, pasa lo siguiente:
Se crea un registro en wp-terms con Slug Igual a minúsculas de la categoría, term_id = 59
Se crea un registro en wp-terms-taxonomy poniendo en taxonomy: category con el mismo term_id (59) y taxonomy_id = 61, es autoincrement. El resto de campos no se rellenan.
Se crea un registro en wp-terms-relationships, donde relaciona el objeto creado (object_id) que puede ser un post, pagina o link poniendo el id del elemento con el id de wp-terms-taxonomy.
Cómo obtener una lista de las categorías de Links
Ejemplo práctico para obtener los links de una categoría:
- Se crea un nuevo link en una web de pruebas y se pone en la categoría: Mis Enlaces
- El enlace se crea en la tabla wp-links con link_id = 1
- La categoría existe en las tablas:
- wp-terms con el term_id = 26
- wp-tems_taxonomy con el wp-tems_taxonomy = 27
- WordPress crea los siguientes registros:
- Uno para la relación Link Creado con su Category en wp-terms-relationship con la relación 1-27 es decir link_id con term_taxonomy_id
Por lo tanto para saber los enlaces de la categoría Mis enlaces con id = 26 primero se debe acceder a la tabla wp-tems_taxonomy para averiguar su wp-tems_taxonomy_id en este caso el 27 y entonces buscar todos los registros de la tabla wp-terms-relationship cuyo wp-tems_taxonomy_id=27 y el valor del campo object_id es el link_id de cada enlace.
La verdad es que se complicaron un poco la vida con este sistema.
// Get category link list $sql = "SELECT DISTINCTROW wp_terms.name, wp_term_taxonomy.term_taxonomy_id FROM (wp_term_taxonomy INNER JOIN wp_terms ON wp_term_taxonomy.term_id = wp_terms.term_id) INNER JOIN wp_term_relationships ON wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id WHERE (((wp_term_taxonomy.taxonomy)='link_category')) ORDER BY wp_terms.name;"; $rst = $wpdb->get_results($sql);