5.0 KiB
thalim-hal-importer
Plugin WordPress qui importe les publications du laboratoire THALIM depuis l'archive ouverte HAL (structure 254015) et les transforme en posts WordPress avec tous les champs Pods renseignés.
- Version : 2.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-hal-importer.git thalim-hal-importer
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 → HAL Import (capacité requise : edit_others_posts).
La page propose deux flux d'import :
1. Aperçu live + import incrémental
- Filtres : plage de dates (
producedDate_s) et auteur (idHAL d'un membre THALIM) - Liste les publications HAL correspondantes avec statut coloré :
- vert : déjà importée (présence du meta
hal_idcôté WP) - jaune : prête à être importée (au moins un auteur HAL matche un user WordPress)
- rouge : aucun auteur THALIM identifié → ignorée
- vert : déjà importée (présence du meta
- Bouton Importer : crée tous les posts « prêts » en statut
pending(à publier après relecture) - Cache des aperçus en transient (5 min, clé hashée sur les filtres), rafraîchissable manuellement
- Bouton Test API pour vérifier la connexion
2. Import en masse via CSV (legacy SPIP)
Permet d'importer des publications anciennes par lots de 100 :
- Upload d'un CSV avec une colonne
hal_id+ d'un fichier de contexte SPIP (axes/tags/programmes/owner par publication) - Traitement par batchs séquentiels (cliquer plusieurs fois)
- Rapport CSV téléchargeable en fin de file
- Annulation possible à tout moment
Mapping des types HAL → catégories WordPress
DOC_TYPE_MAP dans includes/class-importer.php :
| Type HAL | Description | Catégorie WP |
|---|---|---|
ART |
Article | 16 |
COUV |
Chapitre d'ouvrage | 16 |
OUV |
Ouvrage | 15 |
COMM |
Communication | 13 |
ISSUE |
Direction de numéro | 16 |
PROCEEDINGS |
Direction d'ouvrage / actes | 15 |
THESE |
Thèse | 14 |
HDR |
HDR | 14 |
SON |
Son | 19 |
VIDEO |
Vidéo | 19 |
COMM, THESE, HDR, SON, VIDEO sont traités comme événements et utilisent le champ Pods date_de_debut. Les autres utilisent datetime.
Champs HAL → champs WP
À l'import, chaque publication remplit :
- Identification :
hal_id,hal_url(URI HAL),lien_externe_1(PDF si dispo) avec titreDocument HAL // HAL Document - Titre :
post_title(issu de HAL) - Catégorie : triple écriture (term assignment + meta
categorie+ meta_pods_categorie) - Auteurs HAL → membres : matching via
authIdHal_s↔ user metaidentifiant_hal. Stockage en triple-pattern Pods (membresadd_post_meta +_pods_membres) - Date :
date_de_debutoudatetimeselon le type, optionnellement backdaté surproducedDate_s - Métadonnées :
journal,editeur,sous-titre(book/conference title),lieu(city/country pour PROCEEDINGS),reference_bibliographique(citationFull_s) - Fonction :
fonction_auteur(varie selon doc type : « Auteur du chapitre // Chapter author », « Direction de numéro // Editor-in-Chief », etc.) - Axes thématiques : cascade
spip_context→ co-auteurs THALIM → owner. Source effective stockée dans$importer->last_axes_source - Programmes de recherche et étiquettes : depuis
spip_context(import CSV uniquement)
Dédoublonnage
L'import vérifie le meta hal_id avant chaque insertion : une publication ne peut pas être importée deux fois. Le is_imported($hal_id) est aussi affiché en colonne de statut dans l'aperçu.
Prérequis
- WordPress 6.0+
- PHP 7.4+
- Plugin Pods (le pod
postet le champ useridentifiant_hal) - IDs de catégorie WordPress conformes au mapping (8/13/14/15/16/19) — codés en dur dans
DOC_TYPE_MAP
Structure
.
├── thalim-hal-importer.php # point d'entrée, constantes, bootstrap
└── includes/
├── class-hal-api.php # client API HAL (fetch_publications, fetch_by_hal_ids)
├── class-admin-page.php # UI Tools > HAL Import (aperçu + CSV)
└── class-importer.php # mapping HAL → posts WP (triple-storage, axes cascade)
API HAL
- Base :
https://api.archives-ouvertes.fr/search/ - Structure THALIM :
254015 - Documentation : https://api.archives-ouvertes.fr/docs