• Resuelto Angel Aparicio

    (@angel_aparicio_gomez)


    Hola, estoy intentando limpiar una instalación de WordPress que ha tenido problemas de seguridad y en la que se han generado unas 5000 entradas con contenido de spam.

    El problema es que si me voy a «Todas las entradas», no me sale ninguna. Aunque el indicador de «Públicadas» si me muestra que hay 5000.

    Mirando en base de datos veo que en la tabla wp_post están todas las entradas. También veo que tienen un ID en post_author que no corresponde a ningún usuario de la tabla wp_users. Entiendo que esta es la razón por la que no aparecen en el panel de administración.

    ¿Qué podría hacer? A ver, mediante SQL puedo borrar todas estas entradas, pero no sé si esto dejará «basura» en la base de datos, así que me gustaría saber si existe una opción mejor.

    Gracias.

Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)
  • Hola @angel_aparicio_gomez,

    Se me ocurre que podías hacerlo de dos maneras, una «simple» sería crear un nuevo usuario de WP y luego modificarle el ID desde la base de datos y probar si eso te muestra las entradas en el panel.

    Tal como dices, las entradas en la base de datos se almacenan en wp_post pero también hay datos en otras tablas como wp_post_meta. Sería ideal borrar a través del panel de WordPress.

    Otra manera sería utilizando WP-CLI, es una herramienta de consola que muchos servidores tienen instalada. Con ella podrías ejecutar un comando para borrar todas las entradas.

    Ten cuidado y utilízalo bajo tu propia responsabilidad. Antes haz una copia de seguridad de la base de datos y de los archivos para ganar en salud.

    El siguiente comando de WP-CLI borra todas las entradas (post) de tu instalación:

    wp post delete $(wp post list --post_type='post' --format=ids) --force

    Puedes ver la documentación del comando aquí https://developer.wordpress.org/cli/commands/post/delete/

    Saludos.

    Iniciador del debate Angel Aparicio

    (@angel_aparicio_gomez)

    Hola, ¡gracias!

    Al final borré los post de spam a través de una consulta SQL, que lo controlo más que WP CLI. Aunque supongo que la opción de WP CLI habría sido más correcta.

    Por si alguien le pudiera servir, dejo aquí la consulta usada:

    DELETE FROM wp_posts WHERE post_author NOT IN (SELECT ID FROM wp_users);
    DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT ID FROM wp_posts);

Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)
  • El debate ‘No se muestran los post en el panel de control’ está cerrado a nuevas respuestas.