La necesidad de borrar todos los posts dentro de una categoría en WordPress puede ser una tarea sencilla siempre y cuando el numero de posts no sea muy alto. Hace algunos días me vi en la necesidad de tener que borrar más de 6000 entradas de una sola categoría en una instalación de WordPress y por supuesto borrarlas desde el editor de 20 en 20, no es una opción adecuada, ni algo recomendable en el que invertir tu tiempo.
La forma adecuada de hacer esto es realizando una consulta directa en nuestra base de datos para borrar todos los posts y para ello tenemos que entrar a phpMyAdmin para gestionar la base de datos de nuestra instalación de WordPress.
Vamos a ver paso a paso como borrar todas las entradas de una categoría en WordPress desde la base de datos.
Primero tenemos que entrar a phpMyAdmin y tienes que entrar desde el panel de administración de tu Hosting. El siguiente ejemplo lo hago utilizando Plesk, aunque en cPanel los pasos son prácticamente iguales.
Primero entra a la sección de bases de datos.
A continuación verás un listado de base de datos en caso de que tengas varias y necesitas darle click a la que estás utilizando con tu instalación de WordPress.
Después de darle click a la base de datos, te salen las opciones y herramientas disponibles para ella. Para entrar a phpMyAdmin dale click a Webadmin o phpMyAdmin si te aparece así.
Cuando le das click a Webadmin se abre una ventana nueva con phpMyAdmin y bastante información visual, no te preocupes, en este caso solo tienes que hacerle caso a SQL como se indica en la siguiente imagen.
Dale click a SQL para sue se muestre el campo de texto en donde puedes ejecutar comandos en la base de datos.
En ese campo de texto tienes que ejecutar el siguiente comando que puedes copiar y pegar.
[php]
delete a,b,c,d
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON ( a.ID = b.object_id )
LEFT JOIN wp_postmeta c ON ( a.ID = c.post_id )
LEFT JOIN wp_term_taxonomy d ON ( d.term_taxonomy_id = b.term_taxonomy_id )
LEFT JOIN wp_terms e ON ( e.term_id = d.term_id )
WHERE e.term_id =36
[/php]
Importante.
De este código solo tines que cambiar el numero 36 de la última linea por número ID de tu categoría.
Ya que tienes el código en esa ventana, solo tienes que darle ejecutar como se ve en la siguiente imagen.
¿Como saber el número ID de una categoría en WordPress?
La respuesta es sencilla. Entra a la administración de WordPress, en «Entradas» selecciona «Categorías». Ahí veras una lista con todas las categorías que tienes creadas en WordPress.
Tienes dos maneras de ver el ID de cada categoría.
1- Con solo poner el mouse encima del nombre de una de las categorías, abajo en la barra de estado en la ventana de tu navegador, verás la dirección URL para ver esa categoría y ahí viene el ID.
2- Dale click a editar categoría y verás arriba en la dirección URL la ID que tiene la categoría.
Con eso ya tienes el ID de la categoría a la que quieres borrarle todos los posts utilizando el código antes mencionado.
¿Alguna vez tuviste la necesidad de borrar todos los posts de una categoría en WordPress?
Espero que esta solución te ayude.
No me funciono, aparece Table ‘*******.wp_posts’ doesn’t exist
Hola Cristian.
Al parecer estas utilizando otro nombre para la tabla de los posts de WordPress, en el código de arriba pongo el ejemplo de una instalación natural y es «wp_posts». En tu error pones «‘*******.wp_posts’», entonces hay dos opciones.
1- Ejecutaste mal el código.
2- Tus tablas tienen otro nombre y no es como se instala por omisión. En este caso tendrías que usar «tuprefijo_wp_posts», con el nombre exacto de tu tabla.
Saludos.
BUENAS NOCHES, ACAVO DE LEER TU PUBLICACIÓN, AUN NO LA HE UTILIZADO PERO ESPERO Y ME FUNCIONE.
UNA PREGUNTA, NECESITO QUITAR TODAS LA PUBLICACIONES DE UNA CATEGORIA, DECIDÍ BORRAR LAS PARA QUE NO SE ENCUENTREN EN SEO,
PERO EN EL FUTURO NECESITO VOLVERLOS A COLOCAR, ALGUNA SUGERENCIA PARA RESPALDAR TODAS LAS ENTRADAS DE UNA CATEGORIA???
DE ANTEMANO MUICHAS GRACIAS.
No se cual sea el fin de quitar y poner posts al por mayor, pero si vas a quitar y poner, mejor pásalos todos a borrador y después los regresas a publicados.
Saludos.
buenos días y gracias por responder, esta opción que me mencionas es lo que necesito, el objetivo era ese ya que como nos patrocinan una categoría, hay un pequeño lapso de un mes en el cual no podemos publicar ni mostrar nada de estos patrocinadores pero posteriormente, necesitamos volver a mostrar su contenido.
te lo agradezco mucho.
sin más.
jose cruz chavez
De nada José, que bueno que te sirvió el tip.
Saludos.
Muy práctico. Me ha servido para aprender cómo se relacionan los posts con las categoría dentro de la base de datos, ya que lo que yo necesito no es eliminarlos, sino obtenerlos direactamente de la base de datos por categorías. Ahora, basándome en esta consulta creo que podré conseguir mi propósito. ¡Gracias!
Que bueno que te ayudó aunque no sea para lo mismo.
Saludos.
Me ha ido genial para borrar 1000 entradas. Fantástico
Felicidades por un artículo tan bien explicado.
He intentado borrar 4000 entradas utilizando la última versión de WordPress y no me lo ha borrado correctamente. Ha desaparecido la categoría pero se me han quedado comentarios, etiquetas y varios cientos de artículos que he tenido que borrar a mano.
Me ha servido tu ejemplo, una pregunta….¿cómo harías la consulta para eliminar todos los post que se han quedado sin categoría?, he probado poniendo el id = 0 pero no funciona, imagino que la consulta a la base de datos debe platearse de otra forma ¿no?
Gracias.
Saludos
La categoría sin categoría también tiene un ID y puedes ver cual tiene asignado en la administración.
Saludos.
Gracias Peter, pero no me refiero a la categoria «sin categoria» que viene por defecto en el wordpress, me refiero a un montón de post que borré la categoría la que pertenecían y ahora se han quedado en el listado de post pero sin categoria asignada, me gustaría limpiarlo pero no termino de dar con la consulta sql adecuada.
Te agradecería si me pudieras echar una mano.
Gracias.
Saludos.
Crea la categoría «Basura», asigna de manera masiva todos esos posts a la categoría y borralos con la consulta de arriba. 😉