{"id":8826,"date":"2025-04-10T09:37:10","date_gmt":"2025-04-10T00:37:10","guid":{"rendered":"https:\/\/cooss.net\/metodo-para-la-eliminacion-automatica-de-imagenes-de-publicaciones-es\/"},"modified":"2025-04-10T10:41:58","modified_gmt":"2025-04-10T01:41:58","slug":"metodo-para-la-eliminacion-automatica-de-imagenes-de-publicaciones-es","status":"publish","type":"post","link":"https:\/\/cooss.net\/es\/metodo-para-la-eliminacion-automatica-de-imagenes-de-publicaciones-es\/","title":{"rendered":"M\u00e9todos para la eliminaci\u00f3n autom\u00e1tica de im\u00e1genes de publicaciones"},"content":{"rendered":"\n<p>Generalmente, al crear una publicaci\u00f3n en WordPress, tambi\u00e9n se adjuntan im\u00e1genes. Sin embargo, a menudo, cuando se elimina una publicaci\u00f3n, las im\u00e1genes permanecen. Hoy profundizaremos en el tema de \u00abEliminaci\u00f3n autom\u00e1tica de im\u00e1genes de publicaciones\u00bb.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Razones por las cuales las im\u00e1genes no se eliminan al borrar una publicaci\u00f3n<\/h2>\n\n\n\n<p>A pesar de que se elimina una publicaci\u00f3n, las im\u00e1genes permanecen porque las im\u00e1genes y las publicaciones se manejan de manera diferente en la base de datos. Al eliminar una publicaci\u00f3n, WordPress elimina la informaci\u00f3n y el contenido de la meta de la publicaci\u00f3n, pero las im\u00e1genes asociadas se tratan como archivos adjuntos gestionados por separado. Por lo tanto, las im\u00e1genes permanecen por defecto.<\/p>\n\n\n\n<p>Surge un problema aqu\u00ed: cuando las im\u00e1genes relacionadas con la publicaci\u00f3n permanecen, se desperdicia espacio de almacenamiento y puede causar problemas como la disminuci\u00f3n de la velocidad del sitio.<\/p>\n\n\n\n<p>Eliminar im\u00e1genes innecesarias de la Biblioteca de Im\u00e1genes (media library) cada vez es engorroso y se vuelve dif\u00edcil de manejar a medida que aumentan las publicaciones.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introducci\u00f3n a la funci\u00f3n para la eliminaci\u00f3n autom\u00e1tica de im\u00e1genes de publicaciones<\/h2>\n\n\n\n<p>A continuaci\u00f3n se muestra el c\u00f3digo de la funci\u00f3n para eliminar todas las im\u00e1genes asociadas al eliminar una publicaci\u00f3n.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function delete_images_with_post( $post_id ) {\n    \/\/ Ignorar revisiones\n    if ( wp_is_post_revision( $post_id ) ) {\n        return;\n    }\n    \/\/ Eliminar imagen destacada\n    $thumbnail_id = get_post_thumbnail_id( $post_id );\n    if ( $thumbnail_id ) {\n        wp_delete_attachment( $thumbnail_id, true );\n    }\n    \/\/ Eliminar todas las im\u00e1genes adjuntas en el contenido\n    $attachments = get_attached_media( 'image', $post_id );\n    if ( $attachments ) {\n        foreach ( $attachments as $attachment ) {\n            wp_delete_attachment( $attachment-&gt;ID, true );\n        }\n    }\n}\nadd_action( 'before_delete_post', 'delete_images_with_post' );\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3mo funciona la funci\u00f3n<\/h3>\n\n\n\n<p>La funci\u00f3n anterior est\u00e1 conectada al hook de acci\u00f3n `add_action( &#8216;<strong>before_delete_post<\/strong>&#8216;, &#8216;delete_images_with_post&#8217; );`. Este hook se ejecuta justo antes de que se elimine la publicaci\u00f3n, y en este momento se ejecuta la funci\u00f3n &#8216;<strong>delete_image_with_post<\/strong>&#8216;, que busca y elimina las im\u00e1genes asociadas a la publicaci\u00f3n.<\/p>\n\n\n\n<p>1. **Ignorar revisiones**: La funci\u00f3n primero verifica si la publicaci\u00f3n eliminada es una revisi\u00f3n. Las revisiones son versiones anteriores que se crean autom\u00e1ticamente cada vez que se modifica una publicaci\u00f3n, por lo que esta l\u00f3gica de negocio permite saltar revisiones innecesarias.<\/p>\n\n\n\n<p>2. **Eliminar imagen destacada**: Se utiliza la funci\u00f3n `get_post_thumbnail_id` para encontrar la imagen destacada asociada a la publicaci\u00f3n. Si existe una imagen destacada, se elimina utilizando la funci\u00f3n `wp_delete_attachment`.<\/p>\n\n\n\n<p>3. **Eliminar todas las im\u00e1genes en el contenido**: Se utiliza la funci\u00f3n `get_attached_media` para encontrar todas las im\u00e1genes adjuntas en el contenido. Se especifica el tipo &#8216;image&#8217; para extraer todos los formatos de imagen y se ejecuta un bucle para eliminar cada imagen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introducci\u00f3n a los hooks de acci\u00f3n utilizados y relacionados<\/h2>\n\n\n\n<p>El hook de acci\u00f3n `<strong>before_delete_post<\/strong>` se ejecuta justo antes de que se elimine una publicaci\u00f3n. Cuando este hook se activa, se puede definir y llamar a funciones que implementen las funcionalidades necesarias en WordPress. Muchos plugins que mejoran las caracter\u00edsticas de WordPress tambi\u00e9n utilizan estos &#8216;<strong>hooks<\/strong>&#8216; para implementar funcionalidades.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Hooks de acci\u00f3n similares<\/h3>\n\n\n\n<p>1. **after_delete_post**: Este hook se ejecuta despu\u00e9s de que se ha eliminado una publicaci\u00f3n. Es \u00fatil para el seguimiento o el registro de logs si se necesita un procesamiento posterior.<\/p>\n\n\n\n<p>2. **delete_attachment**: Este hook se activa cuando se elimina un archivo adjunto. Se puede utilizar para la funcionalidad de eliminaci\u00f3n de im\u00e1genes.<\/p>\n\n\n\n<p>3. **before_delete_attachment**: Se ejecuta antes de que se elimine un archivo adjunto y se pueden realizar tareas adicionales o evitar la eliminaci\u00f3n seg\u00fan ciertas condiciones.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfC\u00f3mo usarlo?<\/h2>\n\n\n\n<p>Solo necesita agregar la funci\u00f3n anterior al archivo functions.php en la carpeta de su tema. Para m\u00e1s informaci\u00f3n sobre c\u00f3mo modificar functions.php, consulte el siguiente art\u00edculo.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-16018d1d wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/cooss.net\/%EC%9B%8C%EB%93%9C%ED%94%84%EB%A0%88%EC%8A%A4-%EC%88%8F%EC%BD%94%EB%93%9C-%EC%B6%94%EA%B0%80-%EB%B0%8F-%ED%99%9C%EC%9A%A9\">Adici\u00f3n y uso de shortcode en WordPress &#8211; C\u00f3mo escribir functions.php<\/a><\/div>\n<\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Una vez que el c\u00f3digo anterior se ha agregado a functions.php, al eliminar una publicaci\u00f3n, tambi\u00e9n se eliminar\u00e1n todas las im\u00e1genes incluidas en la publicaci\u00f3n. (Se eliminar\u00e1n tanto del registro de la base de datos como de los archivos de imagen almacenados en el servidor.)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Notas importantes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>No funcionar\u00e1 al &#8216;eliminar&#8217; que env\u00eda a la &#8216;papelera&#8217;. Solo funcionar\u00e1 al &#8216;eliminar permanentemente&#8217;.<\/li>\n\n\n\n<li>Si la misma imagen se utiliza en otras publicaciones, la imagen no se mostrar\u00e1 en las otras publicaciones. Es recomendable no usar la misma imagen en m\u00faltiples publicaciones.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusi\u00f3n<\/h2>\n\n\n\n<p>La forma de eliminar autom\u00e1ticamente las im\u00e1genes asociadas a una publicaci\u00f3n es muy beneficiosa y ayuda mucho en la gesti\u00f3n de blogs. A trav\u00e9s de la escritura de c\u00f3digo, se puede maximizar la eficiencia de la base de datos y mejorar el rendimiento general del sitio.<\/p>\n\n\n\n<p>El problema de las im\u00e1genes que permanecen al eliminar publicaciones es molesto, pero al aplicar el m\u00e9todo anterior, se puede resolver f\u00e1cilmente. \u00a1Cuando lo implemente, simplemente agregue el c\u00f3digo anterior al archivo functions.php para utilizarlo de manera s\u00faper sencilla!<\/p>\n\n\n\n<div style=\"margin-top: 10px;margin-bottom: 30px;border-top: 1px solid #ccc\">&nbsp;<\/div>\n\n\n\n<p><b>[wp_is_post_revision] :<\/b> Funci\u00f3n que verifica si una publicaci\u00f3n es una revisi\u00f3n, y si es as\u00ed, omite ciertas acciones.<br><b>[get_post_thumbnail_id] :<\/b> Funci\u00f3n que obtiene el ID de la imagen destacada de una publicaci\u00f3n espec\u00edfica.<br><b>[wp_delete_attachment] :<\/b> Funci\u00f3n que elimina un archivo adjunto espec\u00edfico, y se puede establecer si se debe eliminar forzosamente con el segundo par\u00e1metro.<br><b>[get_attached_media] :<\/b> Funci\u00f3n que obtiene la lista de medios adjuntos a una publicaci\u00f3n espec\u00edfica.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Generalmente, al crear una publicaci\u00f3n en WordPress, tambi\u00e9n se adjuntan im\u00e1genes. Sin embargo, a menudo, cuando se elimina una publicaci\u00f3n, las im\u00e1genes permanecen. Hoy profundizaremos en el tema de \u00abEliminaci\u00f3n autom\u00e1tica de im\u00e1genes de publicaciones\u00bb. Razones por las cuales las im\u00e1genes no se eliminan al borrar una publicaci\u00f3n A pesar de que se elimina una [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[184],"tags":[],"class_list":["post-8826","post","type-post","status-publish","format-standard","hentry","category-shortcode-es"],"_links":{"self":[{"href":"https:\/\/cooss.net\/es\/wp-json\/wp\/v2\/posts\/8826","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cooss.net\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cooss.net\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cooss.net\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cooss.net\/es\/wp-json\/wp\/v2\/comments?post=8826"}],"version-history":[{"count":1,"href":"https:\/\/cooss.net\/es\/wp-json\/wp\/v2\/posts\/8826\/revisions"}],"predecessor-version":[{"id":8865,"href":"https:\/\/cooss.net\/es\/wp-json\/wp\/v2\/posts\/8826\/revisions\/8865"}],"wp:attachment":[{"href":"https:\/\/cooss.net\/es\/wp-json\/wp\/v2\/media?parent=8826"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cooss.net\/es\/wp-json\/wp\/v2\/categories?post=8826"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cooss.net\/es\/wp-json\/wp\/v2\/tags?post=8826"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}