Cuando eliminamos contenido, ya sea: entradas, páginas, comentarios o cualquier tipo de contenido personalizado, vemos que WordPress por defecto envía estos elementos a la papelera, en este artículo veremos cómo configurar la papelera de acuerdo a nuestras necesidades.
¿Cómo funciona la papelera de WordPress?
Cuando eliminamos contenido en WordPress este contenido no se elimina completamente, sino que se marca como enviado a la papelera, y permanece así durante 30 días, luego de los cuales se elimina de forma permanente.
En la siguiente imagen podemos ver el enlace de enviar a la papelera en el listado de entradas.

Si consultas la papelera puedes eliminar los elementos manualmente de forma permanente.

Mantener elementos en la papelera indefinidamente
Como habíamos visto anteriormente WordPress elimina los elementos de la papelera cada 30 días, si no quieres que elimine los elementos de la papelera de forma automática puedes usar el siguiente código.
function dcms_remove_schedule_delete() {
remove_action( 'wp_scheduled_delete', 'wp_scheduled_delete' );
}
add_action( 'init', 'dcms_remove_schedule_delete' );
En el código anterior:
- Usamos el Hook init, que hace referenciar a la función dcms_remove_schedule_delete
- Dentro de esta función simplemente usamos un remove_action
- El remove_action hace referencia al hook y a una función con el nombre wp_scheduled_delete que es parte del core de WordPress
Especificar la cantidad de días de permanencia en la papelera
Si quieres especificar una cantidad de días diferente a los 30 días que por defecto tiene WordPress para mantener elementos en la papelera, puedes hacerlo cambiando la constante EMPTY_TRASH_DAYS.
En el siguiente código se ha cambiado la constante EMPTY_TRASH_DAYS a 15 días.
define('EMPTY_TRASH_DAYS', 15);
Deshabilitar la funcionalidad de papelera
Si te has preguntado ¿que sucede si especifico 0 días en la constante EMPTY_TRASH_DAYS?, efectivamente, tal como debes estar pensando, si especificas a 0 días los elementos no se irán a la papelera y se borrarán de forma permanente directamente.
define('EMPTY_TRASH_DAYS', 0);
De hecho la interfaz de WordPress cambia un poco, tal como se muestra a continuación, ahora eliminarás elementos de forma permanente directamente.

Conclusión
Tal como hemos visto WordPress tiene una funcionalidad de enviar elementos a la papelera en donde permanecen por defecto 30 días antes de ser eliminados completamente, sin embargo usando Hooks o cambiando las constantes de configuración podemos cambiar este comportamiento de acuerdo a nuestras necesidades.
¿Aún con dudas?, en el siguiente video se detallan los puntos anteriores.
Hola, ¿sabes cómo hacer para que pida confirmación? Puse el código de que se eliminara permanentemente, pero no tiene aviso de confirmación, esto podría ocasionarme un clic accidentalmente.
Hola, evaluaré lo que comentas para un futuro artículo. Creo que esto sería particularmente útil especialmente cuando se elimina directamente de forma permanente.