21 Consultas SQL para administrar fácilmente nuestro WordPress

Publicado el 11 febrero 2015 por Gaspar Fernández Moreno @gaspar_fm

Muchas veces cuando trabajamos con WordPress hacemos uso directamente de algún plugin, dentro de la infinidad de ellos que tenemos disponible, lo cual está muy bien pero a veces nos despegamos un poco de los orígenes. MySQL está hecho para usar MySQL (o MariaDB), hace consultas como todos los demás y ¡ podemos aprovecharnos de ello! (e ir mucho más rápido).

Antes de nada, he supuesto que el prefijo de las tablas es el que viene por defecto: " wp_ ", si no es así, cámbialo por el que tengas.

Aunque está organizado todo en 14 tramos, como véis hay muchas consultas listas para copiar y pegar

Backup de nuestra instalación

Lo primero, como siempre, antes de tocar nada es hacer una copia de seguridad de nuestra base de datos (si es posible de los archivos, nunca está de más). Podemos hacerlo desde PHPMyAdmin, o si tenemos una terminal cerca, podemos utilizar mysqldump:

$ mysqldump -u[usuario] -p[contraseña] [basededatos] > archivo.sql

Si no queremos dejar la contraseña en el termina, no la ponemos y nos la preguntará antes de hacer la copia.

Para restaurar, sencillamente haremos:

$ mysql -u[usuario] -p[contraseña] [basededatos]

y ante cualquier problema podemos volver al estado anterior fácilmente.

1 - Migraciones indoloras

Cuando migramos un wordpress de un servidor a otro, normalmente no funcionará en la nueva URL, tenemos que cambiar algunas cosas de sitio, y eso lo podemos hacer directamente en base de datos.

No es una buena idea hacerlo en la tabla completa, ya que algunos desarrolladores tienen la (mala) costumbre de meter URLs en elementos serializados, por lo que si la nueva url no tiene el mismo número de letras que la antigua, tenemos que aplicar otras técnicas para poder realizar la migración.

Con esto cambiamos la url de la página. Ahora vamos a echarle un ojo a los permalinks:

Ahora, en el contenido de los posts:

Por último en los metadatos:

2 - Listar los comentarios del último año

En este caso, estamos pidiendo los comentarios desde el 1 de Enero del 2014 (año-mes-día) hasta justo antes del 1 de Enero de 2015, eso sí, que estén aprobados y no sean trackbacks ni pingbacks.

Del mismo modo podemos listar sólo los comentarios que no son nuestros:

O por ejemplo, obtener un listado de lo más comentado desde el 2014

Con esta consulta recibimos un listado con los títulos de los posts (recortados, porque hay algunos muy largos), la fecha de publicación y el número de comentarios recibidos desde la fecha especificada.

3 - Posts escritos en el último año

Si queremos más información, podemos seleccionar información sobre esos posts para verlos más detenidamente:

4 - Borrar pingbacks

A veces los posts se nos llenan de pingbacks y puede que se descontrole. Podemos hacer:

Si por ejemplo quieres borrar los pingbacks de una serie de posts (o de uno solo):

5 - Listar las IPs desde las que te llega SPAM

Es muy útil si queremos añadir IPs a listas negras por el número de comentarios de SPAM que nos llegan de ellas.

Con esta consulta vemos las IPs únicas que nos han mandado comentarios, junto con el número de veces que han comentado. También, esta consulta la hacemos siempre que haya más de 5 comentarios de SPAM (ya que puede haber muchas que sólo hayan enviado 1 ó 2 y a lo mejor nos dificultan el trabajo más que ayudar).

6 - Listar los posts desde los que entra más SPAM

Muy parecida a una consulta anterior (para ver los posts más comentados).

7 - Abrir o cerrar los comentarios de ciertos posts

Si queremos desactivar los comentarios en posts antiguos, podemos hacer:

Y de forma parecida podemos jugar con el WHERE para determinar fechas mayores/menores o diferentes tipos de post.
También podemos poner comment_status a ' opened ' para permitir de nuevo comentarios.

8 - Borrar comentarios de SPAM

Yo he llegado a tener en algún momento cientos de miles de comentarios de SPAM (nada, a los bots parece que les gusta), llega un momento que la base de datos ocupa mucho y podemos limpiarlo todo de un plumazo:

9 - Identificar tags no utilizados

Si hemos borrado algún post, normalmente los tags y otros metadatos se quedan presentes en base de datos. Y con eso salen en las nubes de tags (aunque con un peso 0 lo único que hacen es hacerla más lenta). También debemos recordar que si actualmente tienes posts programados, estos posts aún no han cogido sus etiquetas, y por tanto, éstas estarán en esta lista. Así que, cuidado cuando vayamos a borrarlas.

10 - Ver listado de personas que han comentado en tu blog

Si queremos obtener un listado único de personas que han comentado (identificadas por su correo electrónico), esta consulta viene muy bien. Además, sacamos información como la URL de la web (si la han dejado). Cuidado con los trackbacks y pingbacks (en esta query nos los quitamos del medio).
Utiliza esta información de forma responsable, no hagas SPAM

11 - Eliminar borradores antiguos

A veces se nos pueden acumular borradores antiguos en la base de datos, pues bien, para deshacernos de ellos:

He puesto de fecha el 1 de Enero de 2015 (año-mes-día). Cuidado cuando estemos borrando, hemos de comprobar dos veces lo que estamos haciendo!!

12 - Eliminar revisiones

13 - Insertar un campo personalizado en todos los posts

Podemos jugar con el post_type y con todas las propiedades que hemos visto antes.

14 - Saber en qué posts tenemos un determinado shortcode

La búsqueda del shortcode no es de lo mejor, porque busca "[shortcode " en todos los posts, si el shortcode sabemos seguro que está cerrado, podemos buscarlo cerrado también.

Algo parecido nos vale para encontrar una palabra mal escrita en todos nuestros posts, por ejemplo
Más info:
13 useful WordPress SQL Queries You Wish You new Earlier (He cogido dos queries de esta web que la encontré mientras estaba escribiendo este post)
Indispensable MySQL Queries For Custom Fields In WordPress - De aquí saqué la de la creación de un campo personalizado en todos los posts