Web de Gure Ametsa Bi Lagun en WordPress para Dokploy

- Docker Compose (WordPress + MariaDB) listo para Dokploy, con instalación
  automática por etapas: idiomas, páginas, menús y plugins recomendados.
- Web bilingüe castellano / euskera con Polylang.
- Tema propio «gure-ametsa»: diseño inspirado en Beargrass Animal Rescue,
  personalizable desde Apariencia → Personalizar (paletas, tipografías,
  secciones de portada ordenables) y patrones de bloques propios.
- Plugin mu «gure-ametsa-core»: animales en adopción con ficha y filtros,
  carrusel y formulario de contacto/adopción.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-24 16:21:26 +02:00
parent 97b8c1be31
commit 0b2c9f271f
64 changed files with 4561 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
<!-- wp:paragraph -->
<p><em>Texto base: complétalo con la razón social y el CIF de la entidad y revísalo con vuestra asesoría.</em></p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>En cumplimiento de la Ley 34/2002 de Servicios de la Sociedad de la Información (LSSI-CE), se informa de que este sitio web pertenece a <strong>Gure Ametsa Bi Lagun</strong>, con domicilio en Jaizubia, 44 · 20280 Hondarribia (Gipuzkoa). Contacto: hola@gureametsabilagun.org · 943 64 52 79.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>Los textos e imágenes de esta web pertenecen a Gure Ametsa Bi Lagun y no pueden reproducirse sin autorización, salvo para difundir a los animales en adopción citando la fuente.</p>
<!-- /wp:paragraph -->

View File

@@ -0,0 +1,63 @@
<!-- wp:paragraph -->
<p>Cada ayuda cuenta. Estas son las formas en las que puedes cambiar la vida de nuestros animales:</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"anchor":"adopcion"} -->
<h2 class="wp-block-heading" id="adopcion">🏡 Adopta</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Adoptar es la forma más directa de salvar una vida. Consulta los <a href="/adopta/">animales en adopción</a>, ven a conocerlos y te acompañaremos en todo el proceso. Todos se entregan con microchip, vacunados y esterilizados.</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"anchor":"acogida"} -->
<h2 class="wp-block-heading" id="acogida">🤝 Casa de acogida</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Algunos animales necesitan salir del centro cuanto antes: cachorros, mayores o convalecientes. Como casa de acogida les ofreces un hogar temporal mientras encuentran su familia definitiva. Nosotros te orientamos en todo momento.</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"anchor":"voluntariado"} -->
<h2 class="wp-block-heading" id="voluntariado">🦮 Voluntariado</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Pasear perros, socializar gatos, ayudar en jornadas de adopción, hacer fotos para las fichas o difundir en redes sociales. Si tienes tiempo y ganas, ¡te necesitamos!</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"anchor":"donaciones"} -->
<h2 class="wp-block-heading" id="donaciones">💚 Donaciones</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Siempre nos vienen bien:</p>
<!-- /wp:paragraph -->
<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Pienso y latas para perros y gatos</li>
<!-- /wp:list-item -->
<!-- wp:list-item -->
<li>Arena para gatos</li>
<!-- /wp:list-item -->
<!-- wp:list-item -->
<li>Mantas, toallas y camas</li>
<!-- /wp:list-item -->
<!-- wp:list-item -->
<li>Correas, collares, arneses y juguetes</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->
<!-- wp:paragraph -->
<p>Si prefieres hacer una aportación económica, <a href="/contacto/#formulario">escríbenos</a> y te indicamos cómo.</p>
<!-- /wp:paragraph -->
<!-- wp:buttons -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="/contacto/#formulario">Quiero colaborar</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

View File

@@ -0,0 +1,15 @@
<!-- wp:paragraph -->
<p>📍 <strong>Jaizubia, 44 · 20280 Hondarribia (Gipuzkoa)</strong><br>📞 <a href="tel:+34943645279">943 64 52 79</a><br>✉️ <a href="mailto:hola@gureametsabilagun.org">hola@gureametsabilagun.org</a><br>🕙 Lunes a viernes: 10:00–13:00 y 14:00–19:00</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"anchor":"formulario"} -->
<h2 class="wp-block-heading" id="formulario">Escríbenos</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Para adopciones, acogidas, voluntariado o reservas del hotel, déjanos tu mensaje y te responderemos lo antes posible.</p>
<!-- /wp:paragraph -->
<!-- wp:shortcode -->
[ga_contacto]
<!-- /wp:shortcode -->

View File

@@ -0,0 +1,35 @@
<!-- wp:paragraph -->
<p>¿Planeas unas vacaciones y no puedes llevar a tu compañero? En Gure Ametsa Bi Lagun cuidamos de tu perro o gato mientras estás fuera, en nuestras instalaciones de Jaizubia (Hondarribia), rodeadas de naturaleza.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2 class="wp-block-heading">Qué ofrecemos</h2>
<!-- /wp:heading -->
<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Alojamiento para perros y gatos, por días o temporadas</li>
<!-- /wp:list-item -->
<!-- wp:list-item -->
<li>Paseos y atención diaria de personal con experiencia</li>
<!-- /wp:list-item -->
<!-- wp:list-item -->
<li>Seguimiento de su alimentación y medicación si la necesita</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->
<!-- wp:paragraph -->
<p>Para reservar es necesario que el animal tenga el microchip y las vacunas al día. Las plazas se llenan en verano y fechas señaladas: reserva con antelación.</p>
<!-- /wp:paragraph -->
<!-- wp:buttons -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="/contacto/#formulario">Consultar disponibilidad</a></div>
<!-- /wp:button -->
<!-- wp:button {"className":"is-style-outline"} -->
<div class="wp-block-button is-style-outline"><a class="wp-block-button__link wp-element-button" href="tel:+34943645279">Llamar: 943 64 52 79</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

View File

@@ -0,0 +1,7 @@
<!-- wp:heading -->
<h2 class="wp-block-heading">Ongi etorri · Bienvenidos</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Gure Ametsa Bi Lagun es la protectora y residencia de animales de Hondarribia. Desde hace más de 25 años colaboramos con los ayuntamientos de Irun y Hondarribia recogiendo a los animales perdidos o abandonados, dándoles atención veterinaria y cuidándolos hasta que encuentran una familia.</p>
<!-- /wp:paragraph -->

View File

@@ -0,0 +1,43 @@
<!-- wp:paragraph -->
<p><em>Texto base: revísalo con vuestra asesoría antes de publicar la web y completa los datos del responsable (razón social y CIF).</em></p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2 class="wp-block-heading">Responsable del tratamiento</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Gure Ametsa Bi Lagun · Jaizubia, 44 · 20280 Hondarribia (Gipuzkoa) · hola@gureametsabilagun.org · 943 64 52 79.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2 class="wp-block-heading">Qué datos tratamos y para qué</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Los datos que nos envías a través del formulario de contacto (nombre, email, teléfono y mensaje) se usan únicamente para responder a tu consulta y, en su caso, gestionar la adopción, acogida, voluntariado o reserva que solicites. La base legal es tu consentimiento.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2 class="wp-block-heading">Conservación y destinatarios</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Conservamos los datos el tiempo necesario para atender tu solicitud y cumplir las obligaciones legales. No se ceden a terceros salvo obligación legal.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2 class="wp-block-heading">Tus derechos</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Puedes ejercer tus derechos de acceso, rectificación, supresión, oposición, limitación y portabilidad escribiendo a hola@gureametsabilagun.org. También puedes reclamar ante la Agencia Española de Protección de Datos (www.aepd.es).</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2 class="wp-block-heading">Cookies</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Esta web solo utiliza cookies técnicas necesarias para su funcionamiento. No utilizamos cookies de analítica ni de publicidad.</p>
<!-- /wp:paragraph -->

View File

@@ -0,0 +1,43 @@
<!-- wp:paragraph -->
<p><strong>Gure Ametsa Bi Lagun</strong> (en euskera, «nuestro sueño, dos amigos») es un centro de protección y residencia de animales situado en Jaizubia, Hondarribia.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2 class="wp-block-heading">Nuestra labor</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Trabajamos desde hace más de 25 años con los ayuntamientos de Irun y Hondarribia. Cuando la Policía Municipal encuentra un animal perdido o abandonado en la vía pública, lo trae a nuestras instalaciones. Aquí pasa un control veterinario y permanece alojado y cuidado hasta que vuelve con su familia o encuentra una nueva.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>Cumpliendo la Ley de Bienestar Animal, todos los animales reciben los tratamientos necesarios antes de ser adoptados:</p>
<!-- /wp:paragraph -->
<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Identificación con microchip</li>
<!-- /wp:list-item -->
<!-- wp:list-item -->
<li>Vacunación y desparasitación</li>
<!-- /wp:list-item -->
<!-- wp:list-item -->
<li>Esterilización</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->
<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p>Adopta y cambia dos mundos: el suyo y el tuyo.</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->
<!-- wp:heading -->
<h2 class="wp-block-heading">¿Has perdido a tu animal?</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Si has perdido a tu perro o gato en Irun u Hondarribia, llámanos cuanto antes al <a href="tel:+34943645279">943 64 52 79</a> y avisa también a la Policía Municipal. Tener el microchip actualizado es la mejor forma de que vuelva a casa.</p>
<!-- /wp:paragraph -->

View File

@@ -0,0 +1,15 @@
<!-- wp:paragraph -->
<p>📍 <strong>Jaizubia, 44 · 20280 Hondarribia (Gipuzkoa)</strong><br>📞 <a href="tel:+34943645279">943 64 52 79</a><br>✉️ <a href="mailto:hola@gureametsabilagun.org">hola@gureametsabilagun.org</a><br>🕙 Astelehenetik ostiralera: 10:00–13:00 eta 14:00–19:00</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"anchor":"formulario"} -->
<h2 class="wp-block-heading" id="formulario">Idatzi iezaguzu</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Adopzioak, harrerak, boluntariotza edo hoteleko erreserbak direla eta, utzi zure mezua eta ahalik eta lasterren erantzungo dizugu.</p>
<!-- /wp:paragraph -->
<!-- wp:shortcode -->
[ga_contacto]
<!-- /wp:shortcode -->

View File

@@ -0,0 +1,7 @@
<!-- wp:heading -->
<h2 class="wp-block-heading">Ongi etorri</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Gure Ametsa Bi Lagun Hondarribiko animalien babesleku eta egoitza da. 25 urte baino gehiago daramatzagu Irun eta Hondarribiko udalekin lanean: galdutako edo abandonatutako animaliak jasotzen ditugu, albaitari-arreta ematen diegu eta familia bat aurkitu arte zaintzen ditugu.</p>
<!-- /wp:paragraph -->

View File

@@ -0,0 +1,35 @@
<!-- wp:paragraph -->
<p>Oporretara joateko asmoa duzu eta ezin duzu zure laguna eraman? Gure Ametsa Bi Lagunen zure txakurra edo katua zaintzen dugu kanpoan zauden bitartean, Hondarribiko Jaizubian ditugun instalazioetan, naturaz inguratuta.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2 class="wp-block-heading">Zer eskaintzen dugu</h2>
<!-- /wp:heading -->
<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Txakur eta katuentzako ostatua, egunka edo denboraldika</li>
<!-- /wp:list-item -->
<!-- wp:list-item -->
<li>Eguneroko ibilaldiak eta esperientziadun langileen arreta</li>
<!-- /wp:list-item -->
<!-- wp:list-item -->
<li>Elikaduraren eta, behar izanez gero, botiken jarraipena</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->
<!-- wp:paragraph -->
<p>Erreserba egiteko, animaliak mikrotxipa eta txertoak egunean izan behar ditu. Udan eta data berezietan plazak azkar betetzen dira: egin erreserba aldez aurretik.</p>
<!-- /wp:paragraph -->
<!-- wp:buttons -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="/eu/harremanetarako/#formulario">Galdetu erabilgarritasuna</a></div>
<!-- /wp:button -->
<!-- wp:button {"className":"is-style-outline"} -->
<div class="wp-block-button is-style-outline"><a class="wp-block-button__link wp-element-button" href="tel:+34943645279">Deitu: 943 64 52 79</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

View File

@@ -0,0 +1,63 @@
<!-- wp:paragraph -->
<p>Laguntza oro da garrantzitsua. Hauek dira gure animalien bizitza aldatzeko moduak:</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"anchor":"adopcion"} -->
<h2 class="wp-block-heading" id="adopcion">🏡 Adoptatu</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Adoptatzea da bizitza bat salbatzeko modurik zuzenena. Begiratu <a href="/eu/adopta/">adopzioko animaliak</a>, etorri haiek ezagutzera eta prozesu osoan lagunduko dizugu. Guztiak mikrotxiparekin, txertatuta eta antzututa ematen dira.</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"anchor":"acogida"} -->
<h2 class="wp-block-heading" id="acogida">🤝 Harrera-etxea</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Animalia batzuek lehenbailehen irten behar dute zentrotik: kumeek, zaharrek edo gaixorik daudenek. Harrera-etxe gisa, aldi baterako etxe bat eskaintzen diezu behin betiko familia aurkitu bitartean. Guk uneoro bideratuko zaitugu.</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"anchor":"voluntariado"} -->
<h2 class="wp-block-heading" id="voluntariado">🦮 Boluntariotza</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Txakurrak paseatu, katuak sozializatu, adopzio-jardunaldietan lagundu, fitxetarako argazkiak atera edo sare sozialetan zabaldu. Denbora eta gogoa badituzu, behar zaitugu!</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"anchor":"donaciones"} -->
<h2 class="wp-block-heading" id="donaciones">💚 Dohaintzak</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Beti ondo etortzen zaizkigu:</p>
<!-- /wp:paragraph -->
<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Txakur eta katuentzako pentsua eta latak</li>
<!-- /wp:list-item -->
<!-- wp:list-item -->
<li>Katuentzako harea</li>
<!-- /wp:list-item -->
<!-- wp:list-item -->
<li>Mantak, eskuoihalak eta oheak</li>
<!-- /wp:list-item -->
<!-- wp:list-item -->
<li>Uhalak, lepokoak, arneseak eta jostailuak</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->
<!-- wp:paragraph -->
<p>Diru-ekarpen bat egin nahi baduzu, <a href="/eu/harremanetarako/#formulario">idatzi iezaguzu</a> eta nola egin azalduko dizugu.</p>
<!-- /wp:paragraph -->
<!-- wp:buttons -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="/eu/harremanetarako/#formulario">Lagundu nahi dut</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

View File

@@ -0,0 +1,11 @@
<!-- wp:paragraph -->
<p><em>Oinarrizko testua: osatu erakundearen izen sozialarekin eta IFKarekin, eta berrikusi zuen aholkularitzarekin.</em></p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>Informazio Gizartearen Zerbitzuei buruzko 34/2002 Legea (LSSI-CE) betez, jakinarazten da webgune hau <strong>Gure Ametsa Bi Lagun</strong> erakundearena dela, helbidea Jaizubia, 44 · 20280 Hondarribia (Gipuzkoa) duena. Harremanetarako: hola@gureametsabilagun.org · 943 64 52 79.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>Webgune honetako testuak eta irudiak Gure Ametsa Bi Lagunenak dira eta ezin dira baimenik gabe erreproduzitu, adopzioko animaliak zabaltzeko izan ezik, iturria aipatuz gero.</p>
<!-- /wp:paragraph -->

View File

@@ -0,0 +1,43 @@
<!-- wp:paragraph -->
<p><strong>Gure Ametsa Bi Lagun</strong> animaliak babesteko zentro eta egoitza bat da, Hondarribiko Jaizubia auzoan.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2 class="wp-block-heading">Gure lana</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>25 urte baino gehiago daramatzagu Irun eta Hondarribiko udalekin lanean. Udaltzaingoak kalean galdutako edo abandonatutako animalia bat aurkitzen duenean, gure instalazioetara ekartzen du. Hemen albaitari-kontrola egiten zaio eta zainduta egoten da bere familiarengana itzuli arte edo familia berri bat aurkitu arte.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>Animalien Ongizaterako Legea betez, animalia guztiek beharrezko tratamenduak jasotzen dituzte adoptatu aurretik:</p>
<!-- /wp:paragraph -->
<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Mikrotxip bidezko identifikazioa</li>
<!-- /wp:list-item -->
<!-- wp:list-item -->
<li>Txertaketa eta desparasitazioa</li>
<!-- /wp:list-item -->
<!-- wp:list-item -->
<li>Antzutzea</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->
<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p>Adoptatu eta bi mundu aldatu: berea eta zurea.</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->
<!-- wp:heading -->
<h2 class="wp-block-heading">Zure animalia galdu duzu?</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Zure txakurra edo katua Irunen edo Hondarribian galdu baduzu, deitu iezaguzu lehenbailehen <a href="tel:+34943645279">943 64 52 79</a> zenbakira eta jakinarazi Udaltzaingoari ere. Mikrotxipa eguneratuta izatea da etxera itzultzeko modurik onena.</p>
<!-- /wp:paragraph -->

View File

@@ -0,0 +1,43 @@
<!-- wp:paragraph -->
<p><em>Oinarrizko testua: berrikusi zuen aholkularitzarekin webgunea argitaratu aurretik eta osatu arduradunaren datuak (izen soziala eta IFK).</em></p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2 class="wp-block-heading">Tratamenduaren arduraduna</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Gure Ametsa Bi Lagun · Jaizubia, 44 · 20280 Hondarribia (Gipuzkoa) · hola@gureametsabilagun.org · 943 64 52 79.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2 class="wp-block-heading">Zein datu tratatzen ditugu eta zertarako</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Harremanetarako formularioaren bidez bidaltzen dizkiguzun datuak (izena, posta elektronikoa, telefonoa eta mezua) zure kontsultari erantzuteko eta, hala badagokio, eskatzen duzun adopzioa, harrera, boluntariotza edo erreserba kudeatzeko baino ez dira erabiltzen. Oinarri juridikoa zure baimena da.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2 class="wp-block-heading">Kontserbazioa eta hartzaileak</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Datuak zure eskaera artatzeko eta lege-betebeharrak betetzeko behar den denboran gordetzen ditugu. Ez zaizkie hirugarrenei lagatzen, legezko betebeharra dagoenean izan ezik.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2 class="wp-block-heading">Zure eskubideak</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Datuetara sartzeko, zuzentzeko, ezabatzeko, aurka egiteko, mugatzeko eta eramateko eskubideak erabil ditzakezu hola@gureametsabilagun.org helbidera idatzita. Datuak Babesteko Espainiako Agentzian (www.aepd.es) ere erreklamazioa aurkez dezakezu.</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2 class="wp-block-heading">Cookieak</h2>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<p>Webgune honek funtzionatzeko beharrezkoak diren cookie teknikoak baino ez ditu erabiltzen. Ez dugu analitikarako edo publizitaterako cookierik erabiltzen.</p>
<!-- /wp:paragraph -->

11
docker/entrypoint.sh Normal file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
# Envoltorio del entrypoint oficial de WordPress:
# lanza en segundo plano la configuración inicial (ga-setup.sh) y después
# arranca Apache con el entrypoint original.
set -euo pipefail
if [[ "${1:-}" == apache2* ]]; then
ga-setup.sh &
fi
exec docker-entrypoint.sh "$@"

5
docker/php.ini Normal file
View File

@@ -0,0 +1,5 @@
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 120
expose_php = Off

276
docker/setup-content.php Normal file
View File

@@ -0,0 +1,276 @@
<?php
/**
* Contenido inicial bilingüe (castellano / euskera).
* Se ejecuta una sola vez con: wp eval-file setup-content.php
*/
$src = ( getenv( 'GA_SRC' ) ?: '/usr/src/gure-ametsa' ) . '/content';
$pll = function_exists( 'pll_set_post_language' ) && function_exists( 'PLL' );
if ( ! $pll ) {
WP_CLI::warning( 'Polylang no está activo: se crea solo el contenido en castellano.' );
}
/* ---------- 1. Idiomas y ajustes de Polylang ---------- */
if ( $pll ) {
$model = PLL()->model;
$existing = wp_list_pluck( $model->get_languages_list(), 'slug' );
$langs = array(
array( 'locale' => 'es_ES', 'slug' => 'es', 'name' => 'Español', 'flag' => 'es', 'term_group' => 0 ),
array( 'locale' => 'eu', 'slug' => 'eu', 'name' => 'Euskara', 'flag' => 'basque', 'term_group' => 1 ),
);
foreach ( $langs as $lang ) {
if ( in_array( $lang['slug'], $existing, true ) ) {
continue;
}
$result = $model->add_language( $lang );
if ( is_wp_error( $result ) ) {
WP_CLI::warning( 'No se pudo crear el idioma ' . $lang['slug'] . ': ' . $result->get_error_message() );
}
}
$model->clean_languages_cache();
$settings = array(
'default_lang' => 'es',
'force_lang' => 1, // Idioma en el directorio: /eu/...
'hide_default' => true, // Castellano sin prefijo.
'rewrite' => true, // /eu/ en lugar de /language/eu/.
'redirect_lang' => true, // Portada en euskera en /eu/ (no /eu/hasiera/).
'browser' => false,
'post_types' => array( 'animal' ),
'taxonomies' => array( 'especie' ),
'sync' => array( 'taxonomies', 'post_meta', '_thumbnail_id', 'menu_order', 'post_parent' ),
);
$options = PLL()->options;
if ( is_object( $options ) && method_exists( $options, 'set' ) ) {
foreach ( $settings as $key => $value ) {
$options->set( $key, $value );
}
if ( method_exists( $options, 'save_all' ) ) {
$options->save_all();
}
} else {
update_option( 'polylang', array_merge( (array) get_option( 'polylang', array() ), $settings ) );
}
// Traducción al euskera del lema del sitio.
if ( class_exists( 'PLL_MO' ) && ( $eu = $model->get_language( 'eu' ) ) ) {
$mo = new PLL_MO();
$mo->import_from_db( $eu );
$mo->add_entry( $mo->make_entry( get_option( 'blogdescription' ), 'Adoptatu eta bi mundu aldatu · Hondarribia' ) );
$mo->export_to_db( $eu );
}
if ( class_exists( 'PLL_Admin_Notices' ) ) {
PLL_Admin_Notices::dismiss( 'wizard' );
}
WP_CLI::log( '[ga-setup] Idiomas: castellano (por defecto) y euskera' );
}
/* ---------- 2. Páginas ---------- */
function ga_setup_page( $slug, $title, $file, $lang ) {
$existing = get_page_by_path( $slug, OBJECT, 'page' );
if ( $existing ) {
return $existing->ID;
}
$content = file_get_contents( $file );
$id = wp_insert_post( array(
'post_type' => 'page',
'post_status' => 'publish',
'post_title' => $title,
'post_name' => $slug,
'post_content' => $content,
), true );
if ( is_wp_error( $id ) ) {
WP_CLI::error( "No se pudo crear la página $slug: " . $id->get_error_message() );
}
if ( function_exists( 'pll_set_post_language' ) ) {
pll_set_post_language( $id, $lang );
}
return $id;
}
// slug es => [título es, archivo es, slug eu, título eu, archivo eu]
$pages = array(
'inicio' => array( 'Inicio', 'inicio', 'hasiera', 'Hasiera', 'hasiera' ),
'quienes-somos' => array( 'Quiénes somos', 'quienes-somos', 'nor-gara', 'Nor gara', 'nor-gara' ),
'colabora' => array( 'Colabora', 'colabora', 'lagundu', 'Lagundu', 'lagundu' ),
'hotel' => array( 'Hotel para perros y gatos', 'hotel', 'hotela', 'Txakur eta katuentzako hotela', 'hotela' ),
'contacto' => array( 'Contacto', 'contacto', 'harremanetarako', 'Harremanetarako', 'harremanetarako' ),
'politica-de-privacidad' => array( 'Política de privacidad', 'privacidad', 'pribatutasun-politika', 'Pribatutasun-politika', 'pribatutasun-politika' ),
'aviso-legal' => array( 'Aviso legal', 'aviso-legal', 'lege-oharra', 'Lege-oharra', 'lege-oharra' ),
);
$ids = array();
foreach ( $pages as $slug => [ $title_es, $file_es, $slug_eu, $title_eu, $file_eu ] ) {
$ids[ $slug ]['es'] = ga_setup_page( $slug, $title_es, "$src/es/$file_es.html", 'es' );
if ( $pll ) {
$ids[ $slug ]['eu'] = ga_setup_page( $slug_eu, $title_eu, "$src/eu/$file_eu.html", 'eu' );
pll_save_post_translations( $ids[ $slug ] );
}
}
update_option( 'show_on_front', 'page' );
update_option( 'page_on_front', $ids['inicio']['es'] );
update_option( 'wp_page_for_privacy_policy', $ids['politica-de-privacidad']['es'] );
WP_CLI::log( '[ga-setup] Páginas creadas' );
/* ---------- 3. Especies ---------- */
$species = array(
'perro' => array( 'Perro', 'txakurra', 'Txakurra' ),
'gato' => array( 'Gato', 'katua', 'Katua' ),
'otros' => array( 'Otros', 'besteak', 'Besteak' ),
);
$term_ids = array();
foreach ( $species as $slug => [ $name_es, $slug_eu, $name_eu ] ) {
$pairs = array( 'es' => array( $slug, $name_es ) );
if ( $pll ) {
$pairs['eu'] = array( $slug_eu, $name_eu );
}
foreach ( $pairs as $lang => [ $term_slug, $term_name ] ) {
$term = get_term_by( 'slug', $term_slug, 'especie' );
if ( ! $term ) {
$res = wp_insert_term( $term_name, 'especie', array( 'slug' => $term_slug ) );
$term = is_wp_error( $res ) ? null : get_term( $res['term_id'], 'especie' );
}
if ( $term ) {
$term_ids[ $slug ][ $lang ] = $term->term_id;
if ( $pll ) {
pll_set_term_language( $term->term_id, $lang );
}
}
}
if ( $pll && count( $term_ids[ $slug ] ?? array() ) === 2 ) {
pll_save_term_translations( $term_ids[ $slug ] );
}
}
/* ---------- 4. Menús ---------- */
function ga_setup_menu( $name, $items ) {
$menu = wp_get_nav_menu_object( $name );
if ( $menu ) {
return $menu->term_id;
}
$menu_id = wp_create_nav_menu( $name );
foreach ( $items as $pos => $item ) {
$args = array( 'menu-item-status' => 'publish', 'menu-item-position' => $pos + 1, 'menu-item-title' => $item['title'] );
if ( isset( $item['page'] ) ) {
$args += array( 'menu-item-type' => 'post_type', 'menu-item-object' => 'page', 'menu-item-object-id' => $item['page'] );
} else {
$args += array( 'menu-item-type' => 'custom', 'menu-item-url' => $item['url'] );
}
wp_update_nav_menu_item( $menu_id, 0, $args );
}
return $menu_id;
}
$menus = array(
'primary' => array(
'es' => ga_setup_menu( 'Principal', array(
array( 'title' => 'Adopta', 'url' => '/adopta/' ),
array( 'title' => 'Acoge', 'url' => '/colabora/#acogida' ),
array( 'title' => 'Voluntariado', 'url' => '/colabora/#voluntariado' ),
array( 'title' => 'Dona', 'url' => '/colabora/#donaciones' ),
array( 'title' => 'Hotel', 'page' => $ids['hotel']['es'] ),
array( 'title' => 'Contacto', 'page' => $ids['contacto']['es'] ),
) ),
),
'footer' => array(
'es' => ga_setup_menu( 'Legal', array(
array( 'title' => 'Aviso legal', 'page' => $ids['aviso-legal']['es'] ),
array( 'title' => 'Política de privacidad', 'page' => $ids['politica-de-privacidad']['es'] ),
) ),
),
);
if ( $pll ) {
$menus['primary']['eu'] = ga_setup_menu( 'Nagusia (euskara)', array(
array( 'title' => 'Adoptatu', 'url' => '/eu/adopta/' ),
array( 'title' => 'Harrera', 'url' => '/eu/lagundu/#acogida' ),
array( 'title' => 'Boluntariotza', 'url' => '/eu/lagundu/#voluntariado' ),
array( 'title' => 'Dohaintza', 'url' => '/eu/lagundu/#donaciones' ),
array( 'title' => 'Hotela', 'page' => $ids['hotel']['eu'] ),
array( 'title' => 'Harremanetarako', 'page' => $ids['contacto']['eu'] ),
) );
$menus['footer']['eu'] = ga_setup_menu( 'Legala (euskara)', array(
array( 'title' => 'Lege-oharra', 'page' => $ids['aviso-legal']['eu'] ),
array( 'title' => 'Pribatutasun-politika', 'page' => $ids['politica-de-privacidad']['eu'] ),
) );
$theme = get_stylesheet();
$nav_menus = array( $theme => $menus );
if ( is_object( PLL()->options ) && method_exists( PLL()->options, 'set' ) ) {
PLL()->options->set( 'nav_menus', $nav_menus );
if ( method_exists( PLL()->options, 'save_all' ) ) {
PLL()->options->save_all();
}
} else {
$opts = (array) get_option( 'polylang', array() );
$opts['nav_menus'] = $nav_menus;
update_option( 'polylang', $opts );
}
}
set_theme_mod( 'nav_menu_locations', array(
'primary' => $menus['primary']['es'],
'footer' => $menus['footer']['es'],
) );
WP_CLI::log( '[ga-setup] Menús creados' );
/* ---------- 5. Animales de ejemplo (opcional) ---------- */
if ( 'true' === getenv( 'SEED_DEMO_ANIMALS' ) ) {
$demo = array(
array(
'es' => array( 'Txuri (ejemplo)', 'Txuri es cariñosa, tranquila en casa y le encantan los paseos por Jaizkibel.' ),
'eu' => array( 'Txuri (adibidea)', 'Txuri maitekorra da, lasaia etxean, eta Jaizkibelen barrena paseatzea asko gustatzen zaio.' ),
'sp' => 'perro',
'meta' => array( 'sexo' => 'hembra', 'edad' => '3', 'edad_unidad' => 'anos', 'tamano' => 'mediano', 'estado' => 'disponible', 'raza' => 'Mestiza' ),
),
array(
'es' => array( 'Beltza (ejemplo)', 'Beltza es un gato curioso y juguetón que busca un hogar sin prisas.' ),
'eu' => array( 'Beltza (adibidea)', 'Beltza katu jakin-nahia eta jostalaria da, eta presarik gabe etxe baten bila dabil.' ),
'sp' => 'gato',
'meta' => array( 'sexo' => 'macho', 'edad' => '1', 'edad_unidad' => 'anos', 'tamano' => 'pequeno', 'estado' => 'disponible', 'raza' => 'Común europeo' ),
),
array(
'es' => array( 'Hartz (ejemplo)', 'Hartz es un abuelito noble que merece pasar sus mejores años en familia.' ),
'eu' => array( 'Hartz (adibidea)', 'Hartz aitona noblea da, eta bere urterik onenak familian igarotzea merezi du.' ),
'sp' => 'perro',
'meta' => array( 'sexo' => 'macho', 'edad' => '7', 'edad_unidad' => 'anos', 'tamano' => 'grande', 'estado' => 'urgente', 'raza' => 'Mastín' ),
),
array(
'es' => array( 'Ilargi (ejemplo)', 'Ilargi es una gatita sociable que se lleva bien con otros gatos.' ),
'eu' => array( 'Ilargi (adibidea)', 'Ilargi katakume soziala da eta beste katuekin ondo moldatzen da.' ),
'sp' => 'gato',
'meta' => array( 'sexo' => 'hembra', 'edad' => '4', 'edad_unidad' => 'meses', 'tamano' => 'pequeno', 'estado' => 'reservado', 'raza' => 'Común europeo' ),
),
);
foreach ( $demo as $animal ) {
$translations = array();
foreach ( $pll ? array( 'es', 'eu' ) : array( 'es' ) as $lang ) {
[ $title, $text ] = $animal[ $lang ];
$id = wp_insert_post( array(
'post_type' => 'animal',
'post_status' => 'publish',
'post_title' => $title,
'post_content' => "<!-- wp:paragraph -->\n<p>$text</p>\n<!-- /wp:paragraph -->",
) );
if ( ! empty( $term_ids[ $animal['sp'] ][ $lang ] ) ) {
wp_set_object_terms( $id, array( $term_ids[ $animal['sp'] ][ $lang ] ), 'especie' );
}
foreach ( $animal['meta'] + array( 'salud' => 'chip,vacunado,esterilizado', 'compatible' => 'perros,ninos' ) as $key => $value ) {
update_post_meta( $id, "_ga_$key", $value );
}
if ( $pll ) {
pll_set_post_language( $id, $lang );
}
$translations[ $lang ] = $id;
}
if ( $pll ) {
pll_save_post_translations( $translations );
}
}
WP_CLI::log( '[ga-setup] Animales de ejemplo creados' );
}
// Polylang guarda en caché la portada de cada idioma: se regenera con las traducciones ya creadas.
if ( $pll ) {
PLL()->model->clean_languages_cache();
}
flush_rewrite_rules( false );

160
docker/setup.sh Normal file
View File

@@ -0,0 +1,160 @@
#!/bin/bash
# Configuración inicial idempotente de WordPress para Gure Ametsa Bi Lagun.
# Se ejecuta en segundo plano en cada arranque del contenedor.
set -uo pipefail
log() { echo "[ga-setup] $*"; }
WP_PATH=/var/www/html
SRC=/usr/src/gure-ametsa
export WP_CLI_CACHE_DIR=/tmp/wp-cli-cache
wp_() { runuser -u www-data -- wp --path="$WP_PATH" "$@"; }
# 1. Esperar a que el entrypoint oficial copie WordPress y genere wp-config.php
for _ in $(seq 1 120); do
[[ -f "$WP_PATH/wp-config.php" && -f "$WP_PATH/wp-includes/version.php" ]] && break
sleep 1
done
# 2. Sincronizar tema y mu-plugins propios (siempre, para que las actualizaciones de imagen se apliquen)
mkdir -p "$WP_PATH/wp-content/themes" "$WP_PATH/wp-content/mu-plugins" "$WP_PATH/wp-content/uploads"
rm -rf "$WP_PATH/wp-content/themes/gure-ametsa"
cp -r "$SRC/themes/gure-ametsa" "$WP_PATH/wp-content/themes/"
cp -r "$SRC/mu-plugins/." "$WP_PATH/wp-content/mu-plugins/"
# Polylang: se copia solo si no existe (después se actualiza desde el panel)
if [[ ! -d "$WP_PATH/wp-content/plugins/polylang" ]]; then
mkdir -p "$WP_PATH/wp-content/plugins"
cp -r "$SRC/plugins/polylang" "$WP_PATH/wp-content/plugins/"
fi
chown -R www-data:www-data "$WP_PATH/wp-content"
log "Tema y mu-plugins sincronizados"
# .htaccess para enlaces permanentes bonitos
if [[ ! -f "$WP_PATH/.htaccess" ]]; then
cat > "$WP_PATH/.htaccess" <<'EOF'
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
EOF
chown www-data:www-data "$WP_PATH/.htaccess"
fi
# 3. Esperar a la base de datos
for i in $(seq 1 60); do
if php -r '
$h = getenv("WORDPRESS_DB_HOST") ?: "db"; $p = 3306;
if (strpos($h, ":") !== false) { [$h, $p] = explode(":", $h, 2); }
$m = @new mysqli($h, getenv("WORDPRESS_DB_USER"), getenv("WORDPRESS_DB_PASSWORD"), getenv("WORDPRESS_DB_NAME"), (int) $p);
exit($m->connect_errno ? 1 : 0);'; then
break
fi
[[ $i -eq 60 ]] && { log "La base de datos no responde; se aborta la configuración"; exit 1; }
sleep 2
done
# 4. Instalar WordPress si hace falta
if ! wp_ core is-installed 2>/dev/null; then
: "${WP_URL:?Falta WP_URL}" "${WP_ADMIN_USER:?Falta WP_ADMIN_USER}" "${WP_ADMIN_PASSWORD:?Falta WP_ADMIN_PASSWORD}" "${WP_ADMIN_EMAIL:?Falta WP_ADMIN_EMAIL}"
log "Instalando WordPress en $WP_URL"
wp_ core install \
--url="$WP_URL" \
--title="${WP_TITLE:-Gure Ametsa Bi Lagun}" \
--admin_user="$WP_ADMIN_USER" \
--admin_password="$WP_ADMIN_PASSWORD" \
--admin_email="$WP_ADMIN_EMAIL" \
--skip-email || { log "Fallo en la instalación"; exit 1; }
fi
# 5. Configuración por etapas (cada etapa se ejecuta una sola vez)
VERSION=$(wp_ option get ga_setup_version 2>/dev/null || echo 0)
[[ "$VERSION" =~ ^[0-9]+$ ]] || VERSION=0
# Etapa 2: idiomas, tema, contenido inicial
if (( VERSION < 2 )); then
log "Configurando el sitio por primera vez"
# Idiomas, zona horaria y ajustes generales
{ wp_ language core install es_ES && wp_ site switch-language es_ES; } || log "No se pudo instalar es_ES (¿sin internet?)"
wp_ language core install eu || log "No se pudo instalar eu (¿sin internet?)"
wp_ option update blogdescription "Adopta y cambia dos mundos · Hondarribia"
wp_ option update timezone_string "Europe/Madrid"
wp_ option update start_of_week 1
wp_ option update default_comment_status closed
wp_ option update default_ping_status closed
wp_ rewrite structure '/%postname%/'
wp_ theme activate gure-ametsa
# Limpiar contenido de ejemplo y extras
wp_ post delete 1 2 3 --force 2>/dev/null || true
wp_ plugin delete hello akismet 2>/dev/null || true
# Polylang: web bilingüe castellano / euskera
wp_ plugin activate polylang || log "No se pudo activar Polylang: la web quedará solo en castellano"
wp_ language plugin install polylang es_ES eu 2>/dev/null || true
# Idiomas, páginas, especies, menús y (opcional) animales de ejemplo
if ! wp_ eval-file "$SRC/setup-content.php"; then
log "Fallo creando el contenido inicial"
exit 1
fi
wp_ rewrite flush
wp_ option update ga_setup_version 2
fi
# Etapa 3: plugins recomendados
if (( VERSION < 3 )); then
log "Instalando plugins recomendados"
# Activos desde el principio
ACTIVE=(
wp-mail-smtp # Envío de correo fiable (SMTP)
updraftplus # Copias de seguridad
limit-login-attempts-reloaded # Bloqueo de ataques al login
two-factor # Verificación en dos pasos
webp-converter-for-media # Fotos más ligeras (WebP)
wordpress-seo # Yoast SEO
instagram-feed # Feed de Instagram
koko-analytics # Estadísticas sin cookies
kadence-blocks # Bloques visuales: carruseles, pestañas, acordeones…
blocks-animation # Animaciones de entrada para cualquier bloque
)
# Instalados pero desactivados: se activan cuando se necesiten
INACTIVE=(
give # Donaciones online (GiveWP)
mailpoet # Newsletter
complianz-gdpr # Aviso de cookies (solo si se añaden cookies de terceros)
wp-super-cache # Caché de páginas
)
for plugin in "${ACTIVE[@]}"; do
wp_ plugin install "$plugin" --activate >/dev/null 2>&1 && log " ✓ $plugin" || log " ✗ No se pudo instalar $plugin"
done
for plugin in "${INACTIVE[@]}"; do
wp_ plugin install "$plugin" >/dev/null 2>&1 && log " ✓ $plugin (desactivado)" || log " ✗ No se pudo instalar $plugin"
done
wp_ language plugin install --all es_ES eu >/dev/null 2>&1 || true
# Sin pantallas de bienvenida de los plugins al entrar por primera vez al panel
wp_ transient delete --all >/dev/null 2>&1 || true
wp_ option delete sbi_plugin_do_activation_redirect >/dev/null 2>&1 || true
# Copias de seguridad: base de datos a diario, archivos cada semana
wp_ option update updraft_interval weekly
wp_ option update updraft_interval_database daily
wp_ option update updraft_retain 4
wp_ option update updraft_retain_db 14
wp_ option update ga_setup_version 3
fi
log "Configuración completada"