Files
acrib.es/README.md
Malin d693c61fe6 docs: replace WP readme.html with site documentation README.md
Covers architecture, Polylang setup, MU-plugin features, page IDs,
timeline structure, media library, common operations, and git history.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 08:54:12 +02:00

193 lines
8.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 `<!-- wp:html -->` 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 |
|---|---|
| JanMar 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 20242025 | Constitución Oficial de ACRIB |
| 29 Nov2 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)* |
| 20232024 | 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)*