Débogage & Maintenance
Logs WordPress
Toutes les étapes clés de l'intégration sont tracées via error_log(). Les logs sont visibles dans le fichier d'erreur PHP du serveur (généralement /var/log/php/error.log ou dans le debug.log WordPress si WP_DEBUG_LOG est activé).
Import des offres
| Message log | Signification |
|---|---|
Erreur API: <message> | La requête HTTP vers GetJobOfferList a échoué (réseau, timeout…) |
Debug: new_job_ids = [...] | Liste des PositionID reçus — affiché avant chaque phase de suppression |
Warning: _position_id vide pour post ID X | Un post job_offer en base n'a pas de meta _position_id — ne sera pas supprimé |
Vérification de l'ID X dans new_job_ids | Trace de la comparaison pour chaque offre existante |
Post supprimé : X | Post WordPress supprimé car absent de l'API |
Candidatures
| Message log | Signification |
|---|---|
Formulaire : demande_offre | Déclenchement du hook pour une candidature sur offre |
Formulaire : candidature_spontanee | Déclenchement du hook pour une candidature spontanée |
selected_offer : <valeur> | Valeur brute reçue du champ Elementor |
JobID extrait : X | Post ID WordPress résolu depuis selected_offer |
PositionID récupéré : X | ID HRMaps correspondant au post WP |
Le fichier CV est manquant ou invalide. | Champ cv absent ou vide — l'envoi est annulé |
Fichier encodé en Base64, taille: X caractères | CV encodé avec succès, taille de la chaîne base64 |
Fichier téléchargé temporairement: <path> | Fallback download_url() utilisé |
Erreur lors du téléchargement: <message> | Échec du fallback — envoi annulé |
Succès API : Candidature envoyée avec succès | Réponse HTTP 200 de HRMaps |
Erreur API (Code X) : <body> | HRMaps a retourné une erreur |
Activer les logs WordPress
Pour activer WP_DEBUG_LOG et écrire les error_log() dans wp-content/debug.log :
// wp-config.php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false); // Ne pas afficher les erreurs en front
Erreurs courantes
L'import ne se déclenche pas automatiquement
Cause probable : WP-Cron ne se déclenche qu'au chargement d'une page WordPress.
Solution : Vérifier que le cron est bien planifié depuis l'admin ou via WP-CLI :
wp cron event list
Si import_jobs_event n't apparaît pas :
wp cron event schedule import_jobs_event now hourly
Les offres ne sont pas supprimées alors qu'elles ont disparu de HRMaps
Cause probable : Le post WP n'a pas de meta _position_id (post créé manuellement ou meta corrompue).
Diagnostic : Chercher dans les logs Warning: _position_id vide pour post ID X.
Solution : Supprimer manuellement le post depuis l'admin WP, ou ajouter la meta manquante.
Le CV n'est pas transmis à HRMaps
Causes possibles :
- Le champ
uploadElementor n'a pascvdans son ID - Le fichier uploadé a été supprimé avant l'exécution du hook
- L'URL ne peut pas être résolue en chemin local (CDN externe, par exemple)
Diagnostic : Chercher Le fichier CV est manquant ou invalide. ou Le fichier CV n'existe pas au chemin: dans les logs.
La candidature est envoyée mais HRMaps retourne une erreur
Diagnostic : Chercher Erreur API (Code X) dans les logs. Le corps de la réponse HRMaps contient généralement un message explicite.
Causes fréquentes :
PositionIDnull ou invalide (offre supprimée entre l'affichage et la soumission)- CV trop volumineux (limite HRMaps à vérifier)
FileTypenon reconnu
Points d'attention & améliorations suggérées
| # | Point | Impact | Suggestion |
|---|---|---|---|
| 1 | Fichiers temporaires non supprimés | Accumulation disque | Ajouter @unlink($temp_file) après encodage base64 |
| 2 | Suppression définitive des offres | Irréversible | Envisager un statut draft plutôt que suppression directe, ou archiver dans une table custom |
| 3 | _start_date tronquée à 9 car. | Date potentiellement incorrecte | Vérifier le format retourné par l'API et ajuster le substr si nécessaire |
| 4 | Gender: 1 en dur | Données incorrectes potentielles | À aligner avec HRMaps si le champ devient obligatoire |
| 5 | WP-Cron dépendant du trafic | Sync retardée | Configurer un cron système (curl wp-cron.php) |
| 6 | Aucune mise à jour des offres existantes | Données potentiellement obsolètes | Implémenter un update_post_meta si l'offre existe déjà (titre, dates, etc.) |
| 7 | Typo _adress | Confusion maintenance | Documenter comme intentionnelle, ne pas corriger sans migration complète |