• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
Inicio / Tutoriales / Core / Eliminar automáticamente las imágenes al borrar una entrada

Eliminar automáticamente las imágenes al borrar una entrada

[ 19 marzo 2025 ] [ Autor: Jhon Marreros Guzmán ][ Core - Básico] [ ]

imagen mejoras

Suscríbete a DecodeCMS:  

En un artículo anterior habíamos visto como eliminar automáticamente las imágenes de un producto de WooCommerce, sin embargo en este caso veremos como hacerlo para entradas incluyendo las imágenes que forman parte del contenido de la entrada.

 

Generalidades

Cuando creamos una entrada podemos agregar una imagen destacada, pero también imágenes como parte del contenido.
La idea es que al eliminar la entrada también se eliminen las imágenes asociadas.

Entrada con imágenes

 

Código para eliminar las imágenes de una entrada al eliminar al entrada

Hay que tener en cuenta que este código tendrá efecto sólo cuando la entrada se haya eliminado completamente, es decir eliminado de la papelera.

Ten en cuenta que si la imagen se usa en otra entrada o página no estará disponible ya que habrá sido eliminada físicamente.
add_action( 'before_delete_post', 'delete_all_post_images' );

function delete_all_post_images( $post_id ) {

	if ( get_post_type( $post_id ) !== 'post' ) {
		return;
	}

	// Borrar imagen destacada
	$thumbnail_id = get_post_thumbnail_id( $post_id );
	if ( $thumbnail_id ) {
        wp_delete_attachment( $thumbnail_id, true );
	}

	// Contenido de entrada
	$post_content = get_post_field( 'post_content', $post_id );

	preg_match_all( '/<img[^>]+src="([^">]+)"/', $post_content, $matches );

	$image_urls = $matches[1];

	foreach ( $image_urls as $image_url ) {
		// Obtener el ID de la imagen
		$attachment_id = attachment_url_to_postid( $image_url );
		if ( ! $attachment_id ) {
			// Si no se encuentra, intenta sin las dimensiones
			$image_url_no_dims = preg_replace( '/-\d+x\d+(?=\.\w+$)/', '', $image_url );
			$attachment_id = attachment_url_to_postid( $image_url_no_dims );
		}
		if ( $attachment_id ) {
			wp_delete_attachment( $attachment_id, true );
		}
	}
}

En el código anterior

  • Utilizamos el Hook before_delete_post que hace referencia a la función delete_all_post_images
  • Dentro de esa función hacemos una comprobación si el tipo de contenido es una entrada
  • Obtenemos y borramos la imagen destacada de la entrada
  • Para el contenido de la entrada usamos una expresión regular para obtener todas las URLs de imágenes usadas
  • Buscamos si hay algún medio asociado a dicha URL y obtenemos su ID
  • Si no existe buscamos la URL quitando el texto de las dimensiones y obtenemos su ID
  • Finalmente borramos la imagen asociada a esa URL

 

Conclusión

Como has podido comprobar es posible eliminar todas las imágenes asociadas a una entrada, imagen destacada e imágenes del contenido, al eliminar una entrada, en este artículo hemos visto como realizar esto de manera simple a través de código.

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • Eliminar automáticamente las imágenes al borrar un producto de WooCommerceEliminar automáticamente las imágenes al borrar un producto de WooCommerce
  • Cambiar el tipo de Custom Post Type en WordPressCambiar el tipo de Custom Post Type en WordPress
  • Crear usuario Administrador de WordPress desde la Base de DatosCrear usuario Administrador de WordPress desde la Base de Datos
  • Ordenar alfabéticamente el contenido de WordPressOrdenar alfabéticamente el contenido de WordPress
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (1 votos, promedio: 5,00 de 5)
Cargando...

Interacciones con los lectores

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral principal

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Omnisend
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad SEO social woocommerce

Populares

Excluir palabras al usar la búsqueda de WordPress

Mostrar el nombre de usuario en el menú de WordPress

Mostrar las variaciones en la lista de productos de WooCommerce

Modificar automáticamente un plugin luego de su actualización

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2026 Todos los derechos reservados