4.9 KiB
thalim-newsletter
Plugin WordPress qui compose les newsletters mensuelles du laboratoire THALIM à partir du contenu déjà publié sur le site, et les exporte en HTML prêt pour un envoi email.
- Version : 1.0.0
- Auteur : THALIM Dev
- Licence : GPL v2 or later
Installation
cd wp-content/plugins
git clone gitea@figureslibres.io:valentin_le_moign/thalim-plugin-newsletter.git thalim-newsletter
Puis activer depuis l'admin WordPress. Dans le cadre du projet THALIM, le clonage est automatisé par bootstrap.sh du repo thalim-stack.
Utilisation
Une fois activé, le plugin ajoute une page d'administration : Outils → Newsletter (capacité requise : edit_others_posts).
Le workflow :
- Sélection d'un mois (sélecteur année-mois)
- Chargement AJAX (
thalim_nl_load_month) des contenus éligibles, regroupés par catégorie parente - Cases à cocher pour inclure ou exclure chaque publication / séance
- Champs intro, conclusion, URL d'inscription, URL de désinscription
- Sauvegarde : crée un post WordPress dans la catégorie Newsletter (
20) avec le HTML email complet enpost_content - Bouton Exporter en HTML (
thalim_nl_export_html) → téléchargement du fichiernewsletter-THALIM-{mois}.html
Une liste des newsletters déjà sauvegardées permet de revenir éditer un mois passé.
Fenêtres d'éligibilité par catégorie
Les contenus pertinents d'un mois donné ne sont pas seulement « les posts publiés ce mois-ci » — chaque catégorie a sa propre logique de fenêtre temporelle (cf. WINDOW_TYPES dans includes/class-post-query.php) :
| Catégorie | Fenêtre |
|---|---|
Appels (8), Soutenances (14) |
datetime_to_fin (du datetime à date_de_fin) |
Colloques (10), Séminaires (11) |
debut_minus35_to_fin (de date_de_debut - 35j à date_de_fin) |
Ouvrages (15), Articles (16) |
datetime_plus3m (du datetime à datetime + 3 mois) |
| Toutes les autres | datetime_plus35d (du datetime à datetime + 35 jours) |
Quand datetime (ou date_de_debut) est vide, le post_date sert de fallback. Cette logique permet par ex. à un appel à communication d'apparaître dans toutes les newsletters jusqu'à sa date de fin.
Catégories couvertes
La liste des catégories éligibles n'est pas codée en dur dans le plugin — elle est calculée dynamiquement via Thalim_NL_Post_Query::get_eligible_categories() (toutes les catégories WordPress, groupées par parent). Les constantes en haut de thalim-newsletter.php (THALIM_NL_CAT_APPELS = 8, etc.) ne servent qu'à associer les fenêtres temporelles spéciales aux catégories concernées :
| Constante | ID | Description |
|---|---|---|
THALIM_NL_CAT_APPELS |
8 | Appels |
THALIM_NL_CAT_COLLOQUES |
10 | Colloques |
THALIM_NL_CAT_SEMINAIRES |
11 | Séminaires |
THALIM_NL_CAT_COMMS |
13 | Communications |
THALIM_NL_CAT_SOUTENANCES |
14 | Soutenances |
THALIM_NL_CAT_OUVRAGES |
15 | Ouvrages |
THALIM_NL_CAT_ARTICLES |
16 | Articles |
THALIM_NL_CAT_NEWSLETTER |
20 | Newsletter (catégorie où sont sauvegardés les digests) |
IDs vérifiés en DB le 2026-03-20. À mettre à jour en cas de migration ou de réorganisation des taxonomies.
Format HTML email
includes/class-html-exporter.php génère un HTML compatible clients mail :
- Layout table-based, largeur 600 px
- Styles inline sur tous les éléments
- Polices : Gelasio (Google Fonts
@import, fallback Georgia) pour les titres, Arial/Helvetica pour le corps - Media queries pour le rendu mobile
- Preheader caché (texte d'aperçu dans les boîtes mail)
Le HTML complet est généré à la sauvegarde et stocké tel quel dans post_content — l'export se contente de le renvoyer.
Prérequis
- WordPress 6.0+
- PHP 7.4+
- Plugin Pods (le pod
postet son champ catégorie pour la triple écriture)
Structure
.
├── thalim-newsletter.php # point d'entrée, constantes, bootstrap
├── assets/
│ ├── admin.css # styles de la page admin
│ └── admin.js # interactions (sélecteur mois, cases, export)
└── includes/
├── class-post-query.php # requêtes SQL custom + fenêtres temporelles par catégorie
├── class-html-exporter.php # génération du HTML email (tables, inline styles)
└── class-admin-page.php # UI Tools > Newsletter + handlers AJAX + sauvegarde