{"id":5016,"date":"2025-09-18T16:25:50","date_gmt":"2025-09-18T14:25:50","guid":{"rendered":"https:\/\/wpmastertoolkit.com\/module\/media-replacement\/"},"modified":"2025-09-18T16:37:24","modified_gmt":"2025-09-18T14:37:24","slug":"media-replacement","status":"publish","type":"module","link":"https:\/\/wpmastertoolkit.com\/es\/module\/sustitucion-de-soportes\/","title":{"rendered":"Sustituci\u00f3n de soportes"},"content":{"rendered":"<h1 class=\"wp-block-heading\">Reemplazo de medios - Reemplace los medios de WordPress sin romper sus enlaces<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Introducci\u00f3n<\/h2>\n\n\n\n<p>A todos nos ha pasado: una imagen mal retocada, un PDF obsoleto, un v\u00eddeo demasiado comprimido... pero ya insertado por todo el sitio. Borrar y volver a importar rompe las URL, deja p\u00e1ginas con enlaces muertos y cambia el ID de los medios.<br>El m\u00f3dulo <strong>Sustituci\u00f3n de soportes<\/strong> de WPMasterToolKit resuelve este problema: se <strong>sustituye el archivo fuente<\/strong> medios de comunicaci\u00f3n <strong>sin cambiar su ID, nombre de archivo o fecha de publicaci\u00f3n<\/strong>. Resultado : <strong>todas las URL e integraciones siguen siendo v\u00e1lidas<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfA qu\u00e9 plugins puede sustituir este m\u00f3dulo?<\/h2>\n\n\n\n<p>Relevante si utiliza un plugin dedicado como \"Enable Media Replace\". Este m\u00f3dulo <strong>ofrece la misma l\u00f3gica<\/strong> (sustituci\u00f3n in situ) pero integrado de forma nativa en WPMasterToolKit, sin necesidad de un plugin adicional.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Qu\u00e9 hace exactamente el m\u00f3dulo<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Sustituci\u00f3n in situ<\/strong> copia tu nuevo archivo <strong>sobre el archivo existente<\/strong> en el disco.<\/li>\n\n\n\n<li><strong>Identidad preservada<\/strong> : <strong>ID, slug\/nombre de archivo y fecha<\/strong> de los medios de comunicaci\u00f3n siguen siendo los mismos, por lo que <strong>sin cambios de URL<\/strong>.<\/li>\n\n\n\n<li><strong>Miniaturas regeneradas<\/strong> Tras la sustituci\u00f3n, el m\u00f3dulo se reinicia <code data-no-auto-translation=\"\">wp_generate_attachment_metadata()<\/code> para <strong>recrear todas las tallas inferiores<\/strong> (miniaturas).<\/li>\n\n\n\n<li><strong>Comprobaci\u00f3n estricta de tipos<\/strong> el nuevo archivo <strong>deben tener el mismo tipo MIME<\/strong> (por ejemplo, JPG \u2192 JPG, PDF \u2192 PDF). As\u00ed se evitan incoherencias y problemas de integraci\u00f3n.<\/li>\n\n\n\n<li><strong>Resumen visual<\/strong> una interfaz de administraci\u00f3n para visualizar la informaci\u00f3n <strong>\"Actuel<\/strong> vs <strong>\"Nuevo<\/strong> (tipo, tama\u00f1o, anchura\/altura para las im\u00e1genes) antes de la validaci\u00f3n.<\/li>\n\n\n\n<li><strong>Limpieza fiable de archivos antiguos<\/strong> : supresi\u00f3n de los archivos y subdimensiones existentes, incluidas las im\u00e1genes <strong><code data-no-auto-translation=\"\">-scaled<\/code><\/strong>. Si un plugin (por ejemplo, multiling\u00fce) bloquea el borrado, un <strong>\"hard delete<\/strong> Aseg\u00farese de limpiar los restos.<\/li>\n\n\n\n<li><strong>Integraci\u00f3n natural en la administraci\u00f3n<\/strong> :\n<ul class=\"wp-block-list\">\n<li>Bot\u00f3n <strong>\"Sustituir medios<\/strong> en las acciones de l\u00ednea del <strong>Mediateca<\/strong> (lista).<\/li>\n\n\n\n<li>Bot\u00f3n <strong>modo de edici\u00f3n<\/strong> medios de comunicaci\u00f3n.<\/li>\n\n\n\n<li>Bot\u00f3n <strong>Publicar cuadro<\/strong> (pantalla de edici\u00f3n de archivos adjuntos).<\/li>\n\n\n\n<li>Una p\u00e1gina interna (bajo <strong>Medios de comunicaci\u00f3n<\/strong>) se encarga de la carga y la confirmaci\u00f3n. <strong>oculto en el men\u00fa<\/strong> para seguir siendo accesible s\u00f3lo a trav\u00e9s de los botones de acci\u00f3n.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Detalles de UX en la administraci\u00f3n<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Interfaz clara con dos columnas: <strong>Actual<\/strong> vs <strong>Nuevo<\/strong>.<\/li>\n\n\n\n<li>Arrastre y suelte o haga clic para seleccionar el archivo.<\/li>\n\n\n\n<li><strong>Validaci\u00f3n inmediata en el lado JS<\/strong> (peso m\u00e1ximo del sitio, tipo id\u00e9ntico), con mensajes localizados.<\/li>\n\n\n\n<li><strong>Bot\u00f3n \"Sustituir<\/strong> desactivado mientras no se superen las validaciones.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Escenarios y l\u00edmites a tener en cuenta<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Mismo tipo obligatorio<\/strong> : t\u00fa <strong>no puede<\/strong> sustituir un PNG por un JPG. Mantener el mismo formato garantiza 0 casos.<\/li>\n\n\n\n<li><strong>Nombre de archivo conservado<\/strong> est\u00e1 dise\u00f1ado para mantener <strong>exactamente la misma URL<\/strong>.<\/li>\n\n\n\n<li><strong>CDN \/ cach\u00e9<\/strong> Tras la sustituci\u00f3n, recuerde <strong>purgar la cach\u00e9<\/strong> si utiliza una CDN o un almacenamiento en cach\u00e9 agresivo.<\/li>\n\n\n\n<li><strong>Dimensiones<\/strong> si importa una imagen m\u00e1s grande\/peque\u00f1a, las miniaturas se regenerar\u00e1n en consecuencia (dependiendo de los tama\u00f1os de imagen\/tema de su WordPress).<\/li>\n\n\n\n<li><strong>Permisos<\/strong> accesible a funciones con <code data-no-auto-translation=\"\">upload_files<\/code>.<\/li>\n\n\n\n<li><strong>Seguridad<\/strong> todo est\u00e1 protegido por <strong>nonce<\/strong> y comprueba el archivo cargado (<code data-no-auto-translation=\"\">is_uploaded_file<\/code>tipos, tama\u00f1o m\u00e1ximo de WordPress).<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">C\u00f3mo utilizar este m\u00f3dulo<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ir a <strong>Medios de comunicaci\u00f3n<\/strong> \u2192 <strong>Biblioteca<\/strong>.<\/li>\n\n\n\n<li>En la l\u00ednea del soporte que se va a sustituir, haga clic en <strong>Sustituir medios<\/strong> (o abra el archivo multimedia y haga clic en el mismo bot\u00f3n).<figure class=\"wp-block-image size-large\"><img alt=\"\" fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"417\" src=\"https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-1024x417.png\" class=\"wp-image-5017\" srcset=\"https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-1024x417.png 1024w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-300x122.png 300w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-768x313.png 768w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-1536x626.png 1536w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-18x7.png 18w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image.png 1899w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/li>\n\n\n\n<li>Arrastre y suelte el <strong>nuevo archivo<\/strong> (del mismo tipo que el original).<figure class=\"wp-block-image size-large\"><img alt=\"\" decoding=\"async\" width=\"1024\" height=\"632\" src=\"https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-1-1024x632.png\" class=\"wp-image-5019\" srcset=\"https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-1-1024x632.png 1024w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-1-300x185.png 300w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-1-768x474.png 768w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-1-18x12.png 18w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-1.png 1296w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/li>\n\n\n\n<li>Consulta la informaci\u00f3n en la vista previa <strong>\"Nuevo\"<\/strong>.<\/li>\n\n\n\n<li>Haga clic en <strong>Sustituir<\/strong>.<br>Eso es todo: <strong>la URL no cambia<\/strong>el sitio sigue apuntando al mismo ID, pero con el <strong>archivo actualizado<\/strong>.<figure class=\"wp-block-image size-large\"><img alt=\"\" decoding=\"async\" width=\"1024\" height=\"639\" src=\"https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-2-1024x639.png\" class=\"wp-image-5022\" srcset=\"https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-2-1024x639.png 1024w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-2-300x187.png 300w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-2-768x479.png 768w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-2-18x12.png 18w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2025\/09\/image-2.png 1293w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Nuestras opciones t\u00e9cnicas (y por qu\u00e9)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Conservar ID\/ruta<\/strong> copiar el nuevo archivo <strong>en la ruta original<\/strong> (<code data-no-auto-translation=\"\">copy()<\/code> \u2192 mismo nombre, misma ubicaci\u00f3n). Esta es la \u00fanica manera de garantizar que <strong>todos los enlaces siguen siendo v\u00e1lidos<\/strong>.<\/li>\n\n\n\n<li><strong>Validaci\u00f3n MIME estricta<\/strong> comparaci\u00f3n entre el MIME original y el del nuevo archivo mediante <code data-no-auto-translation=\"\">wp_check_filetype_and_ext()<\/code> y <code data-no-auto-translation=\"\">get_post_mime_type()<\/code> para evitar sorpresas (incrustaciones, reproductores, etiquetas HTML, etc.).<\/li>\n\n\n\n<li><strong>Limpieza robusta<\/strong> utilizamos <code data-no-auto-translation=\"\">wp_delete_attachment_files()<\/code> con los metadatos y los tama\u00f1os de las copias de seguridad, a continuaci\u00f3n, un <strong>alternativa<\/strong> supresi\u00f3n f\u00edsica si es necesario (en el caso de las im\u00e1genes <code data-no-auto-translation=\"\">-scaled<\/code> o plugins multiling\u00fces).<\/li>\n\n\n\n<li><strong>Regeneraci\u00f3n de metadatos<\/strong> : <code data-no-auto-translation=\"\">wp_generate_attachment_metadata()<\/code> + <code data-no-auto-translation=\"\">wp_update_attachment_metadata()<\/code> para recrear todos los subtama\u00f1os inmediatamente despu\u00e9s de la sustituci\u00f3n, sin necesidad de herramientas de terceros.<\/li>\n\n\n\n<li><strong>Experiencia administrativa<\/strong> botones a\u00f1adidos mediante :\n<ul class=\"wp-block-list\">\n<li><code data-no-auto-translation=\"\">media_row_actions<\/code><\/li>\n\n\n\n<li><code data-no-auto-translation=\"\">attachment_fields_to_edit<\/code> (para el modal)<\/li>\n\n\n\n<li><code data-no-auto-translation=\"\">attachment_submitbox_misc_actions<\/code> (editar pantalla)<br>A <strong>submen\u00fa p\u00e1gina oculta<\/strong> se carga bajo demanda para mostrar la interfaz de usuario de sustituci\u00f3n, con activos espec\u00edficos (CSS\/JS) y cadenas localizadas.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Seguridad y capacidad<\/strong> :\n<ul class=\"wp-block-list\">\n<li>Acceso restringido mediante <code data-no-auto-translation=\"\">upload_files<\/code>.<\/li>\n\n\n\n<li><strong>Nonce<\/strong> espec\u00edfico del m\u00f3dulo para todas las URL y formularios.<\/li>\n\n\n\n<li>Controla <code data-no-auto-translation=\"\">is_uploaded_file<\/code>gesti\u00f3n de los errores de carga y respeto de <code data-no-auto-translation=\"\">wp_max_upload_size()<\/code> (mediante JS localizado).<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Rendimiento<\/strong> carga condicional de activos <strong>s\u00f3lo<\/strong> en la p\u00e1gina de sustituci\u00f3n. Si el m\u00f3dulo no est\u00e1 activado, <strong>no se carga nada<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusi\u00f3n<\/h2>\n\n\n\n<p>El m\u00f3dulo <strong>Sustituci\u00f3n de soportes<\/strong> de WPMasterToolKit facilita la sustituci\u00f3n de un soporte <strong>seguro, r\u00e1pido y sin efectos secundarios<\/strong> : <strong>mismo ID, misma URL, misma fecha<\/strong>pero <strong>archivo actualizado<\/strong> y <strong>miniaturas regeneradas<\/strong>. Se acabaron los enlaces rotos y los problemas de reimportaci\u00f3n. Es la herramienta ideal para mantener tus bibliotecas multimedia limpias y actualizadas, con total confianza.<\/p>\n\n\n\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Le plugin WPMasterToolKit pour WordPress propose une solution pratique avec son module \u00ab\u00a0Media Replacement\u00a0\u00bb, permettant de remplacer des fichiers m\u00e9dias sans casser les liens existants. Cette fonction, plus int\u00e9gr\u00e9e et efficace que des plugins similaires comme \u00ab\u00a0Enable Media Replace\u00a0\u00bb, vise \u00e0 r\u00e9duire le nombre de plugins actifs pour am\u00e9liorer les performances du site. Elle s&rsquo;int\u00e8gre parfaitement \u00e0 l&rsquo;interface d&rsquo;administration de WordPress, permettant un remplacement transparent et s\u00e9curis\u00e9 des fichiers tout en maintenant l&rsquo;int\u00e9grit\u00e9 des liens. C&rsquo;est une solution id\u00e9ale pour une gestion simplifi\u00e9e et optimis\u00e9e des m\u00e9dias.<\/p>","protected":false},"featured_media":0,"parent":0,"template":"","meta":{"_acf_changed":true,"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_surecart_dashboard_logo_width":"180px","_surecart_dashboard_show_logo":true,"_surecart_dashboard_navigation_orders":true,"_surecart_dashboard_navigation_invoices":true,"_surecart_dashboard_navigation_subscriptions":true,"_surecart_dashboard_navigation_downloads":true,"_surecart_dashboard_navigation_billing":true,"_surecart_dashboard_navigation_account":true},"class_list":["post-5016","module","type-module","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/wpmastertoolkit.com\/es\/wp-json\/wp\/v2\/module\/5016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wpmastertoolkit.com\/es\/wp-json\/wp\/v2\/module"}],"about":[{"href":"https:\/\/wpmastertoolkit.com\/es\/wp-json\/wp\/v2\/types\/module"}],"wp:attachment":[{"href":"https:\/\/wpmastertoolkit.com\/es\/wp-json\/wp\/v2\/media?parent=5016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}