# ACRIB — Asociación Casa Românească de las Islas Baleares ![ACRIB](https://acrib.es/wp-content/uploads/2026/05/constitucion-acrib.jpg) **Website:** [acrib.es](https://acrib.es) **Stack:** WordPress 6.9.4 · PHP 8.5 · Kadence theme (free) · Polylang 3.8.4 · Contact Form 7 · WP Super Cache --- ## Overview ACRIB is the association of Romanian entrepreneurs and professionals in the Balearic Islands. The site is trilingual (Spanish, Romanian, English) and serves as the public face of the association — presenting its history, benefits, events, and a membership contact form. --- ## Architecture | Layer | Detail | |---|---| | Hosting | aaPanel / BT-Panel, Nginx, PHP 8.5 FPM | | Server access | Tailscale VPN → `root@maagar` | | WP root | `/www/wwwroot/acrib.es/` | | WP-CLI | `/usr/local/bin/wp --allow-root` | | Cache | WP Super Cache — purge: `rm -rf wp-content/cache/supercache/` | | Git remote | SSH key at `/root/.ssh/id_ed25519` | ### Polylang language setup | Language | Slug | Front page ID | About page ID | Nav menu ID | |---|---|---|---|---| | Spanish (es) | `/` | 5 | 29 | Primary (default) | | Romanian (ro) | `/ro/` | 33 | 69 | Nav RO (ID 16) | | English (en) | `/en/` | 34 | 70 | Nav EN (ID 17) | Language switcher: flags-only, injected as a custom nav menu item in each menu. --- ## MU-Plugin: `acrib-core.php` Location: `wp-content/mu-plugins/acrib-core.php` — always-on, no activation required. **Current version:** 1.4 ### Features - **Transparent header on homepage + translations** — `body_class` filter at priority 999 removes Kadence's `non-transparent-header` class and adds `transparent-header` / `mobile-transparent-header`. Detects Polylang-translated front pages via `pll_get_post_translations()`. - **Full-width / title-hide CSS** — reads `_kadence_post_layout` post meta and injects page-specific CSS to hide the Kadence title section and remove content padding (Kadence free workaround). - **Homepage critical CSS** — injected via `wp_head` for all front-page variants (ES/RO/EN). Positions header absolutely over the hero, removes Kadence content margins. - **Custom footer** — replaces Kadence's default copyright footer with ACRIB branding, legal links (Aviso Legal, Privacidad, Cookies), Facebook icon link, and "Hosted by Cloud Host" credit. - **Security hardening** — `X-Frame-Options`, `X-Content-Type-Options`, `Referrer-Policy`, `Permissions-Policy` headers; XML-RPC disabled; REST API user enumeration blocked; generator tag removed. - **Performance** — emoji scripts removed (~20 KB saving); post revisions capped at 3. --- ## Pages | ID | Slug | Language | Description | |---|---|---|---| | 5 | `/` | ES | Spanish homepage (hero, sections, CF7 form) | | 33 | `/ro/` | RO | Romanian homepage | | 34 | `/en/` | EN | English homepage | | 29 | `/sobre-acrib/` | ES | History timeline (10 milestones) | | 69 | `/ro/despre-acrib/` | RO | Romanian timeline translation | | 70 | `/en/about-acrib/` | EN | English timeline translation | ### Homepage sections (all three languages) 1. **Hero** — full-viewport cover block with transparent header overlay 2. **La Asociación / Asociația / The Association** — mission statement 3. **Pilares / Piloni / Pillars** — three-column values 4. **Beneficios / Beneficii / Benefits** — membership advantages 5. **Eventos / Evenimente / Events** — upcoming events placeholder 6. **Miembros / Membri / Members** — founding member logos 7. **Hazte Socio / Devino Membru / Join** — CTA with membership tiers 8. **Contacto / Contact / Contact** — Contact Form 7 shortcode Contact forms: ES form ID 6 (`acrib-contact`), RO form ID 61 (`acrib-contact-ro`), EN form ID 62 (`acrib-contact-en`). --- ## History Timeline (`/sobre-acrib/`) The timeline is embedded as a `` block with self-contained CSS and a vanilla-JS lightbox. All three language versions share identical HTML structure. ### CSS layout - Alternating left/right cards, 40% wide, 10% margin each side - Center timeline line with gradient (navy → gold → burgundy) - Cards: flex layout — thumbnail (130×110 px, `object-fit:cover`) + text - Odd items (left-side cards): `flex-direction:row-reverse` → thumbnail on the right (toward timeline), text on the left - Even items: thumbnail left, text right - Thumbnails are clickable (lightbox via `#acrib-lb` overlay) - Mobile (≤640px): single-column, full-width images ### Lightbox Vanilla JS, no dependencies. Overlay div `#acrib-lb` injected into each timeline page's `wp:html` block. Opens on thumbnail click, closes on overlay click or `Escape` key. Locks body scroll while open. ### Timeline milestones (ES, newest → oldest) | Date | Event | |---|---| | Jan–Mar 2026 | Tres Primeros Eventos del Club | | 3 Dec 2025 | Proyección de Cine Rumano (ICR Madrid) | | Nov 2025 | Bandera Rumana en el Paseo Sagrera | | Autumn 2025 | Seminario Emil Racoviță — Cuevas del Drach | | Oct 2025 | El Atlas de la Belleza — Mihaela Noroc | | 2025 | Evento Nostalgia | | Dec 2024–2025 | Constitución Oficial de ACRIB | | 29 Nov–2 Dec 2024 | La Bandera Rumana Ondea en Mallorca | | 26 Mar 2024 | **La Semilla de ACRIB** — Jornada en la Cambra de Comerç *(founding event — burgundy dot)* | | 2023–2024 | Los Primeros Pasos (meetings with PIMEM, Palma Activa) | --- ## Media Library Key uploaded images (all in `wp-content/uploads/2026/05/`): | File | WP ID | Used in | |---|---|---| | `nostalgia-acrib.jpg` | 65 | Timeline: Nostalgia event | | `atlas-belleza-acrib.jpg` | 66 | Timeline: Atlas de la Belleza | | `racovita-acrib.jpg` | 67 | Timeline: Emil Racoviță seminar | | `bandera-acrib.jpg` | 75 | Timeline: Bandera Nov 2024 + Nov 2025 Paseo Sagrera | | `palma-activa-acrib.jpg` | 76 | Timeline: Primeros Pasos | | `cambra-acrib.png` | 77 | Timeline: La Semilla / Cambra de Comerç | | `eventos-2026-acrib.jpg` | 78 | Timeline: Tres Primeros Eventos 2026 | | `cine-acrib.jpg` | 79 | Timeline: Proyección Cine Rumano | | `constitucion-acrib.jpg` | 80 | Timeline: Constitución Oficial | > **Note:** Facebook CDN URLs expire (the `oe=` parameter is a Unix timestamp). Always download Facebook images to the server and upload to WP Media Library before using them in content. --- ## Common Operations ### Deploy a PHP script to WordPress ```bash scp -i /root/.ssh/id_ed25519 script.php root@maagar:/tmp/ ssh -i /root/.ssh/id_ed25519 root@maagar \ "/usr/local/bin/wp --path=/www/wwwroot/acrib.es --allow-root eval-file /tmp/script.php" ``` > **Tip:** Do not embed large strings (CSS, JS, HTML) directly in scripts run via `eval-file`. PHP's `eval()` silently fails on large single-quoted strings. Use `file_get_contents('/tmp/file.txt')` instead. ### Purge cache ```bash ssh root@maagar "rm -rf /www/wwwroot/acrib.es/wp-content/cache/supercache/" ``` ### WP-CLI examples ```bash # Get post content wp --path=/www/wwwroot/acrib.es --allow-root post get 29 --field=post_content # Update post wp --path=/www/wwwroot/acrib.es --allow-root post update 29 --post_content="$(cat file.html)" # Run arbitrary PHP wp --path=/www/wwwroot/acrib.es --allow-root eval 'echo get_bloginfo("url");' ``` ### Update MU-plugin ```bash scp -i /root/.ssh/id_ed25519 acrib-core.php \ root@maagar:/www/wwwroot/acrib.es/wp-content/mu-plugins/acrib-core.php ``` --- ## Git History | Commit | Description | |---|---| | `1473d34` | fix: timeline full-width single-column layout + RO language files | | `b235608` | feat: RO/EN timeline translations, Facebook page link, real ACRIB history | | `34714e9` | feat: multilingual support — RO/EN translations and menu fixes | | `0e03636` | fix: extend Kadence title-section hide to all pages with title:hide meta | | `430defd` | feat: hero fix, Kadence footer removal, Sobre ACRIB timeline, Novedades blog, Polylang | --- ## Facebook ACRIB Facebook page: [facebook.com/profile.php?id=61583585888787](https://www.facebook.com/profile.php?id=61583585888787) Linked in the site footer via SVG icon (injected by MU-plugin `wp_footer` action). --- *Site built and maintained by [Cloud Host](https://cloudhost.es)*