diff --git a/CHANGELOG.md b/CHANGELOG.md index 80d76ab..25ac5b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,20 @@ Formato: `X.Y.Z` según `VERSIONADO.md` --- +## [1.1.0] — 2026-06-05 + +### fix: eliminar cédula del sitio público +- Quitada la cédula (1103591648) de `pflores_get_cv_data()`, `pflores_cv_fallback_data()` y todos los `inc/cv-data.php` de los 4 temas. +- Limpiados los campos `'id'` y `'C.I.'` de las opciones `pflores_perfil` en BD dev (`.20`) y producción (`.32`). + +### feat: LOPDP Ecuador +- **Página de Política de Privacidad** creada automáticamente en `/politica-de-privacidad/` (Art. 26 LOPDP, datos anónimos, base legal interés legítimo). +- **Banner de cookies** en el footer público (`wp_footer`): fondo navy `#1B3A5C`, botón rojo `#c0392b`, JS con `localStorage`, `display:flex` sin `!important` para que pueda ocultarse. +- **Widget de dashboard** "CV Patricia Flores — Estadísticas de visitas" con visitas por tema + total + nota LOPDP. +- **Link discreto** "Política de Privacidad · LOPDP" en el footer de los 4 temas. + +--- + ## [1.0.1] — 2026-06-05 ### Correcciones post-deploy a producción diff --git a/VERSION b/VERSION index 7dea76e..9084fa2 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.1 +1.1.0 diff --git a/backend/wordpress/wp-content/plugins/pflores-cv-fields/pflores-cv-fields.php b/backend/wordpress/wp-content/plugins/pflores-cv-fields/pflores-cv-fields.php index 7192630..ebb06e6 100644 --- a/backend/wordpress/wp-content/plugins/pflores-cv-fields/pflores-cv-fields.php +++ b/backend/wordpress/wp-content/plugins/pflores-cv-fields/pflores-cv-fields.php @@ -298,7 +298,6 @@ function pflores_get_cv_data(): array 'focus' => $perfil['pf_focus'] ?? '', 'languages' => $perfil['pf_languages'] ?? '', 'born' => $perfil['pf_born'] ?? '', - 'id' => $perfil['pf_ci'] ?? '', 'web' => $perfil['pf_web'] ?? '', ], 'photo' => $photoUrl, @@ -321,7 +320,6 @@ function pflores_get_cv_data(): array 'additional' => [ 'Idiomas' => $perfil['pf_languages'] ?? '', 'Disponibilidad' => $perfil['pf_availability'] ?? '', - 'C.I.' => $perfil['pf_ci'] ?? '', 'Fecha de nacimiento' => $perfil['pf_born'] ?? '', 'Web profesional' => $perfil['pf_web'] ?? '', ], @@ -329,12 +327,152 @@ function pflores_get_cv_data(): array } /* ───────────────────────────────────────────── - 3. FALLBACK si CMB2 no está activo + 3. LOPDP — Política de privacidad, banner y widget +────────────────────────────────────────────── */ + +// A) Crear página de Política de Privacidad (una sola vez) +add_action('admin_init', 'pflores_create_privacy_page'); +function pflores_create_privacy_page(): void +{ + if (get_option('pflores_privacy_page_created')) { + return; + } + + $content = '
Patricia Soledad Flores Sánchez · patricflorsanchez@gmail.com · pflores.linkedcorp.net
+ +Este sitio web registra únicamente estadísticas anónimas de visitas: número de páginas vistas por intervalo horario. No se recopila ningún dato personal identificable (nombre, correo, IP persistente ni cookies de seguimiento).
+ +Estadísticas propias del sitio para conocer el nivel de uso. Los datos no se comparten con terceros.
+ +Interés legítimo de la titular del sitio, conforme al Art. 26 de la Ley Orgánica de Protección de Datos Personales del Ecuador (LOPDP).
+ +Los registros se almacenan como transients de WordPress y se eliminan automáticamente cada hora.
+ +Puede ejercer sus derechos de acceso, rectificación, cancelación y oposición contactando por correo electrónico a patricflorsanchez@gmail.com.
+ +Junio de 2026.
'; + + $id = wp_insert_post([ + 'post_title' => 'Política de Privacidad', + 'post_name' => 'politica-de-privacidad', + 'post_content' => $content, + 'post_status' => 'publish', + 'post_type' => 'page', + 'post_author' => 1, + ]); + + if ($id && ! is_wp_error($id)) { + update_option('pflores_privacy_page_created', 1); + } +} + +// B) Banner LOPDP en el footer público +add_action('wp_footer', 'pflores_lopd_banner'); +function pflores_lopd_banner(): void +{ + if (is_admin()) { + return; + } + ?> + + + + (int) get_option('persona_total_visits', 0), + 'cvolio' => (int) get_option('cvolio_total_visits', 0), + 'lumina' => (int) get_option('lumina_total_visits', 0), + 'apex-cv' => (int) get_option('apex_total_visits', 0), + ]; + $total = array_sum($temas); + echo '| ' . esc_html($slug) . ' | '; + echo '' . esc_html((string) $visitas) . ' |
| Total | '; + echo '' . esc_html((string) $total) . ' |
Visitas únicas por hora (LOPDP — datos anónimos)
'; +} + +/* ───────────────────────────────────────────── + 4. FALLBACK si CMB2 no está activo ────────────────────────────────────────────── */ function pflores_cv_fallback_data(): array { return [ - 'hero' => ['eyebrow' => 'Currículum ejecutivo', 'name' => 'Patricia Soledad Flores Sánchez', 'role' => 'Gerente / Jefa de Operaciones Financieras', 'role2' => 'Sector financiero y microfinanzas', 'intro' => 'Ejecutiva financiera con más de 22 años de trayectoria en banca y microfinanzas.', 'location' => 'Loja, Ecuador', 'email' => 'patricflorsanchez@gmail.com', 'phone' => '+593 99 469 8405', 'linkedin' => 'https://www.linkedin.com/in/patricia-soledad-flores-s%C3%A1nchez-43b84418/', 'availability' => 'Inmediata | Presencial / Híbrida / Remota', 'focus' => 'Operaciones financieras, control interno y transformación digital', 'languages' => 'Español nativo | Inglés básico en formación activa', 'born' => '3 de agosto de 1980', 'id' => '1103591648', 'web' => 'pflores.linkedcorp.net'], + 'hero' => ['eyebrow' => 'Currículum ejecutivo', 'name' => 'Patricia Soledad Flores Sánchez', 'role' => 'Gerente / Jefa de Operaciones Financieras', 'role2' => 'Sector financiero y microfinanzas', 'intro' => 'Ejecutiva financiera con más de 22 años de trayectoria en banca y microfinanzas.', 'location' => 'Loja, Ecuador', 'email' => 'patricflorsanchez@gmail.com', 'phone' => '+593 99 469 8405', 'linkedin' => 'https://www.linkedin.com/in/patricia-soledad-flores-s%C3%A1nchez-43b84418/', 'availability' => 'Inmediata | Presencial / Híbrida / Remota', 'focus' => 'Operaciones financieras, control interno y transformación digital', 'languages' => 'Español nativo | Inglés básico en formación activa', 'born' => '3 de agosto de 1980', 'web' => 'pflores.linkedcorp.net'], 'photo' => '', 'metrics' => [], 'highlights' => [], diff --git a/backend/wordpress/wp-content/themes/apex-cv/front-page.php b/backend/wordpress/wp-content/themes/apex-cv/front-page.php index b9997a0..a525571 100644 --- a/backend/wordpress/wp-content/themes/apex-cv/front-page.php +++ b/backend/wordpress/wp-content/themes/apex-cv/front-page.php @@ -140,6 +140,10 @@ $skills = array_filter($skillsFlat); + + [ 'Idiomas' => 'Español nativo | Inglés básico en formación activa', 'Disponibilidad' => 'Inmediata | Presencial / Híbrida / Remota', - 'C.I.' => '1103591648', 'Fecha de nacimiento'=> '3 de agosto de 1980', 'Web profesional' => 'pflores.linkedcorp.net', ], diff --git a/frontend/cvfolio-theme/footer.php b/frontend/cvfolio-theme/footer.php index 1cb46bc..f75b788 100644 --- a/frontend/cvfolio-theme/footer.php +++ b/frontend/cvfolio-theme/footer.php @@ -1,7 +1,9 @@ diff --git a/frontend/cvfolio-theme/inc/cv-data.php b/frontend/cvfolio-theme/inc/cv-data.php index b379ce0..57130b4 100644 --- a/frontend/cvfolio-theme/inc/cv-data.php +++ b/frontend/cvfolio-theme/inc/cv-data.php @@ -181,7 +181,6 @@ function cvolio_cv_data(): array 'additional' => [ 'Idiomas' => 'Español nativo | Inglés básico en formación activa', 'Disponibilidad' => 'Inmediata | Presencial / Híbrida / Remota', - 'C.I.' => '1103591648', 'Fecha de nacimiento' => '3 de agosto de 1980', 'Web profesional' => 'pflres.linkedcorp.net', ], diff --git a/frontend/lumina-cv-theme/footer.php b/frontend/lumina-cv-theme/footer.php index eaf0f9a..37faa5a 100644 --- a/frontend/lumina-cv-theme/footer.php +++ b/frontend/lumina-cv-theme/footer.php @@ -8,6 +8,8 @@ declare(strict_types=1); diff --git a/frontend/lumina-cv-theme/inc/cv-data.php b/frontend/lumina-cv-theme/inc/cv-data.php index eb498c3..24b15e7 100644 --- a/frontend/lumina-cv-theme/inc/cv-data.php +++ b/frontend/lumina-cv-theme/inc/cv-data.php @@ -181,7 +181,6 @@ function lumina_cv_data(): array 'additional' => [ 'Idiomas' => 'Español nativo | Inglés básico en formación activa', 'Disponibilidad' => 'Inmediata | Presencial / Híbrida / Remota', - 'C.I.' => '1103591648', 'Fecha de nacimiento' => '3 de agosto de 1980', 'Web profesional' => 'pflres.linkedcorp.net', ], diff --git a/frontend/persona-cv-theme/front-page.php b/frontend/persona-cv-theme/front-page.php index b6d456b..56aa5a6 100644 --- a/frontend/persona-cv-theme/front-page.php +++ b/frontend/persona-cv-theme/front-page.php @@ -375,6 +375,7 @@ $publicUrl = 'https://pflres.linkedcorp.net'; diff --git a/frontend/persona-cv-theme/inc/cv-data.php b/frontend/persona-cv-theme/inc/cv-data.php index b7b5e8e..472a3dc 100644 --- a/frontend/persona-cv-theme/inc/cv-data.php +++ b/frontend/persona-cv-theme/inc/cv-data.php @@ -16,7 +16,6 @@ function persona_cv_data(): array { 'focus' => 'Operaciones financieras, control interno y transformación digital', 'languages' => 'Español nativo | Inglés básico en formación activa', 'born' => '3 de agosto de 1980', - 'id' => '1103591648', 'web' => 'pflres.linkedcorp.net', ], 'metrics' => [ @@ -149,7 +148,6 @@ function persona_cv_data(): array { 'additional' => [ 'Idiomas' => 'Español nativo | Inglés básico en formación activa', 'Disponibilidad' => 'Inmediata | Presencial / Híbrida / Remota', - 'C.I.' => '1103591648', 'Fecha de nacimiento' => '3 de agosto de 1980', 'Web profesional' => 'pflres.linkedcorp.net', ],