2026-05-12 23:33:56 +02:00
2026-05-12 23:33:56 +02:00
2026-05-12 23:33:56 +02:00
2026-05-12 23:33:56 +02:00
2026-05-12 23:33:56 +02:00

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_id côté WP)
    • jaune : prête à être importée (au moins un auteur HAL matche un user WordPress)
    • rouge : aucun auteur THALIM identifié → ignorée
  • 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 titre Document 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 meta identifiant_hal. Stockage en triple-pattern Pods (membres add_post_meta + _pods_membres)
  • Date : date_de_debut ou datetime selon le type, optionnellement backdaté sur producedDate_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 post et le champ user identifiant_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

Description
No description provided
Readme 48 KiB
Languages
PHP 100%