# Mise a jour de webdelphes.com

`wp_publish.py` met a jour les pages du site par l'API REST de WordPress.

```bash
python3 wp_publish.py --dry-run          # ne rien ecrire, montrer le diff
python3 wp_publish.py --apply            # ecrire
python3 wp_publish.py --revert --apply   # retirer ce que le script a pose
```

Il lit les identifiants dans un fichier `.wpcreds` a cote de lui, **non
versionne** :

```
WP_USER='...'
WP_PASS='...'
WP_SITE='https://webdelphes.com'
```

## Deux principes

**On ne remplace jamais une page par un fichier local.** Les copies de
`docs/site-web/` ont diverge du site : la page d'accueil en ligne porte une
image et un appel a l'action commente que le depot ignore, et les guides y sont
passes aux classes `wd-*` du theme. Le script lit le contenu en ligne, y insere
ce qui manque, et le reecrit.

**Les insertions sont idempotentes.** Chacune est bornee par un commentaire
marqueur (`WD-INDEX-DEBUT`, `WD-ANNONCE-DEBUT`). Relancer remplace le bloc au
lieu de l'empiler, et `--revert` le retire sans toucher a ce qui aurait ete
modifie entre-temps dans l'editeur.

## Ce qu'il pose

| Ou | Quoi |
| --- | --- |
| Accueil FR (1122) et EN (1124) | l'annonce de la version de demonstration |
| Les 20 pages de documentation | le retrait du pied « Autres guides », que l'index de la colonne laterale remplace |

## L'index de la documentation : `wp_sidebar.py`

```bash
python3 wp_sidebar.py --dry-run
python3 wp_sidebar.py --apply             # pose l'index dans la colonne
python3 wp_sidebar.py --hide --apply      # l'en retire, sans le detruire
python3 wp_sidebar.py --restore --apply   # remet les widgets d'origine
```

**Etat au 26 aout 2026 : l'index est RETIRE de la colonne.** Il pointe vers les
pages de documentation, toutes en brouillon ; en ligne, ses liens ne menaient
nulle part pour un visiteur. Il attend en widgets desactives — un
`--apply` le remet, le jour de la publication.

La colonne ne contient donc, pour l'instant, que la recherche.

L'index vit dans la **colonne laterale du theme** (`sidebar-1`), pas dans le
corps des pages. Une premiere version l'inserait dans le contenu et il
chevauchait le texte : `wpautop` enveloppe dans un `<p>` tout element inline
place entre deux balises de bloc, et le dernier de ces `<p>` n'etait jamais
ferme avant `</nav>`. On peut s'en premunir — les liens de l'index sont
desormais des blocs a la source — mais la colonne du theme reste le bon
endroit : elle est prevue pour cela, se replie seule sur mobile, et ne se bat
pas avec la largeur maximale de `.wd-doc`.

La colonne ne garde que la **recherche** et l'index. Les sept widgets par
defaut (articles recents, commentaires, archives, categories, et trois blocs
qui les repetaient) sont passes en widgets **desactives** : ils ne sont pas
supprimes et restent recuperables depuis l'administration, ou par
`--restore --apply`.

Deux contreparties, assumees : un widget est global, donc l'index apparait sur
toutes les pages du site, et l'entree courante ne peut pas y etre mise en
evidence.

Il **ne touche pas** aux pages de telechargement (1111 et 1339) : le bloc du
paquet de demonstration ne doit pas etre publie avant le mardi 1er septembre a
10h, et l'archive est deja en ligne.

## Les identifiants de page

`ORDER`, en tete du script, liste les slugs **du site** — pas ceux que le depot
avait supposes. Une premiere version de l'index inventait
`installation-linux-rhel-apache` ; le site utilise `installation-rhel-apache`.
Toute page ajoutee a la documentation doit etre inscrite dans `ORDER` pour
apparaitre dans l'index des autres.

Les liens pointent en `?page_id=N` : c'est la seule forme qui fonctionne tant
que les pages sont en brouillon, et WordPress redirige vers le permalien propre
une fois publiees. C'est aussi ce que le site faisait deja.

## Le jour de la publication — 1er septembre 2026, 10h

1. publier les pages de documentation et leur parent « Documentation » ;
2. `python3 wp_sidebar.py --apply` — l'index revient dans la colonne, avec les
   identifiants de page relus a cet instant ;
3. inserer `docs/site-web/telecharger-bloc-demo.html` dans la page
   `/telecharger/` (1111), et sa traduction dans `/en/download-2/` (1339).

## Sauvegarde

`pages-avant-20260826-2101.json` est l'etat complet des 45 pages avant la
premiere execution.
