=== Reemplazar Texto Frontend ===
Contributors: carlosraffe
Tags: replace, text, frontend, elementor, gettext
Requires at least: 6.0
Requires PHP: 8.0
Stable tag: 1.0.12
License: GPLv2 or later

Reemplaza cadenas exactas visibles únicamente en el frontend desde una interfaz administrativa moderna.

== Description ==

Reemplazar Texto Frontend permite crear pares de texto original y texto de reemplazo desde el panel de WordPress.

Características:
* Solo actúa en el frontend.
* Coincidencia literal y sensible a mayúsculas/minúsculas, en cualquier parte del texto.
* Compatible con cadenas gettext de WordPress.
* Procesa textos visibles generados por Elementor, temas, plugins y JavaScript.
* Observa contenido dinámico añadido después de la carga inicial.
* Permite crear y eliminar tantas reglas como necesites.
* Sistema de actualización remota desde una carpeta web privada.
* Compatible con PHP 8.x y WordPress 6.x/7.x.
* No requiere servicios externos.

== Private updates ==

El repositorio está fijo en el código: https://carlosraffe.sensatoweb.com/actualizaciones/traductor/

Esa carpeta contiene:
* update.php (incluido en este ZIP como update.php.example; se sube UNA sola vez renombrándolo a update.php; detecta automáticamente el ZIP con la versión más alta, con guion o sin él)
* Los ZIP publicados (el nombre da igual: la versión se lee de dentro del propio ZIP)

Para publicar una versión nueva: sube el ZIP. Ya está. No hace falta renombrarlo ni editar nada más.

== Installation ==

1. Instala el ZIP desde Plugins > Añadir plugin > Subir plugin.
2. Activa “Reemplazar Texto Frontend”.
3. Abre el menú “Reemplazar Texto”.
4. Añade el texto original y su texto de reemplazo.
5. Guarda los cambios.

== Changelog ==

= 1.0.12 =
* Al guardar se vacían automáticamente las cachés de página (WP Rocket, LiteSpeed, W3 Total Cache, WP Super Cache, WP Fastest Cache, SiteGround, Autoptimize, Cache Enabler, Breeze, Swift, Kinsta) y la caché de CSS de Elementor. Antes, si borrabas un reemplazo, la caché seguía sirviendo el HTML antiguo y el cambio parecía no aplicarse.
* Nuevo hook rtf_rules_saved por si necesitas purgar algo más desde el tema o un mu-plugin.

= 1.0.11 =
* El plugin vuelve a consultar únicamente update.php (y update.json como respaldo) en la carpeta del repositorio.

= 1.0.10 =
* EL NOMBRE DEL ZIP YA NO IMPORTA. update.php abre cada ZIP de la carpeta y lee la versión real desde la cabecera del plugin que hay dentro. Puedes llamar al archivo como quieras.
* Los ZIP que no sean de este plugin se ignoran, aunque tengan un número de versión más alto.
* La URL de descarga se construye desde el propio servidor: si mueves la carpeta, sigue funcionando.


= 1.0.9 =
* update.php ahora acepta el ZIP con guion o sin guion (traductor-frontend_v1.0.9.zip y traductorfrontend_v1.0.9.zip). Antes solo aceptaba la forma con guion, y un nombre distinto hacía que WordPress no viera ninguna actualización.
* Añadido diagnóstico: abre update.php?debug=1 en el navegador y verás qué ZIP encontró, cuál eligió y por qué descartó los demás.
* La caché interna ya no puede tapar una versión recién publicada: cuando WordPress hace su comprobación real, el plugin consulta el repositorio de verdad. La caché (ahora de 1 hora en vez de 6) solo se usa en las lecturas frecuentes del escritorio.

= 1.0.8 =
* IMPORTANTE: el reemplazo ya no exige que coincida el texto completo del elemento. Ahora sustituye el texto donde aparezca, así que puedes cambiar una sola palabra dentro de un título o párrafo (por ejemplo "acompañamos" por "llevamos").
* Se sustituyen todas las apariciones, no solo la primera.
* Si dos reglas empiezan igual, gana la más larga. Las reglas no se encadenan entre sí.
* Sigue siendo literal y sensible a mayúsculas/minúsculas, respetando espacios y acentos.

= 1.0.7 =
* El plugin pasa a llamarse "Reemplazar Texto Frontend" (antes "Traductor Frontend"). La carpeta y el slug internos siguen siendo traductor-frontend para no romper las actualizaciones.
* Icono nuevo, de estilo moderno, en el encabezado y en el menú del escritorio.
* La columna "Texto traducido" ahora se llama "Texto de reemplazo"; la terminología de la pantalla usa "reemplazos" en vez de "traducciones".

= 1.0.6 =
* CORRIGE que WordPress no detectara las actualizaciones. Ahora se engancha también a la LECTURA del transient (site_transient_update_plugins), así que la actualización aparece sin esperar a que WordPress reescriba su caché de 12 horas.
* La cabecera "Update URI" ya no es false: apunta al repositorio y se implementa el filtro update_plugins_{hostname} de WordPress 5.8+.
* El botón nativo "Volver a comprobar" de Escritorio > Actualizaciones ahora fuerza una consulta real al repositorio.
* El plugin ya no comprueba actualizaciones por su cuenta: se elimina el botón "Comprobar actualizaciones ahora", sus avisos y el mensaje de error.
* El repositorio se consulta con update.php y, si el servidor no lo ejecuta o no existe, cae automáticamente a update.json.

= 1.0.5 =
* El plugin ahora pide `update.php` en vez de `update.json`. Ese script (se sube una sola vez a la carpeta) escanea los ZIP publicados y detecta solo cuál es la versión más alta.
* De aquí en adelante, publicar una versión nueva es solo subir el ZIP con el nombre correcto; no hay que tocar ningún JSON a mano.

= 1.0.4 =
* El repositorio de actualizaciones queda fijo en el código (`https://carlosraffe.sensatoweb.com/actualizaciones/traductor/`); ya no se muestra ni se edita desde el backend.
* Se quita la card "Repositorio de actualizaciones" y el grid informativo ("Cómo funciona", "Contenido dinámico", "Actualizaciones privadas").
* Se conserva el botón "Comprobar actualizaciones ahora".

= 1.0.3 =
* Quita del backend los avisos/banners de OTROS plugins (ej. notificaciones de actualización de terceros) que WordPress inyectaba en la pantalla de Traductor Frontend.
* Elimina los pills decorativos ("Solo frontend", "Coincidencia exacta", "Elementor compatible") del encabezado.

= 1.0.2 =
* Corrige la coincidencia exacta: ya no se recortan espacios, tildes, comillas ni HTML del texto original/traducido al guardar.

= 1.0.1 =
* Ajuste del texto descriptivo del encabezado del backend.
* Sin cambios funcionales.

= 1.0 =
* Primera versión estable.
* Interfaz moderna para traducciones exactas.
* Traducción de contenido estático y dinámico en frontend.
* Sistema de actualización privada mediante update.json y ZIP remoto.
