# Un thème pour agence de recrutement : page carrière et formulaire intégré

> Construire une page carrière avec formulaire de candidature intégré au thème, pour une agence de recrutement qui n'a pas besoin d'un jobboard complet.

- Auteur : WordPress Développement
- Publié le : 2023-04-05
- Mis à jour le : 2023-04-05
- Catégorie : Thèmes
- URL : https://www.wpmoderne.fr/themes/theme-agence-recrutement-page-carriere-formulaire/

## L’essentiel

- Type de contenu offre sans taxonomie superflue
- Formulaire de candidature avec upload de CV natif
- Notification à l'équipe sans extension de formulaire tierce

Faut-il vraiment un jobboard complet pour publier trois à cinq offres d'emploi par mois ? C'est la question qu'a posée une agence de recrutement de taille moyenne, lassée de payer un abonnement à une solution de gestion des candidatures dimensionnée pour des volumes bien supérieurs aux siens. Sa demande : une page carrière sobre, avec un formulaire de candidature qui centralise les dossiers reçus, directement dans le thème.

Le résultat tient dans un type de contenu léger, un formulaire natif avec gestion de pièce jointe, et une notification email qui évite à l'équipe de dépendre d'un tableau de bord externe. Voici comment ce dispositif a été construit.

## Un type de contenu offre, volontairement minimal

Contrairement à un jobboard complet, ce projet ne nécessitait ni taxonomie de secteur, ni système de matching, ni espace candidat. Le type de contenu `offre_emploi` se limite à un titre, un contenu riche pour la description du poste, et deux champs personnalisés : `lieu` et `type_contrat`.

```
register_post_type( 'offre_emploi', array(
    'label'        => 'Offres d\'emploi',
    'public'       => true,
    'supports'     => array( 'title', 'editor' ),
    'has_archive'  => true,
    'rewrite'      => array( 'slug' => 'offres' ),
) );
```

La page d'archive liste les offres actives, triées par date de publication décroissante, avec un lien vers chaque fiche détaillée qui contient le formulaire de candidature juste sous la description du poste.

> L'essentiel à retenir : Type de contenu offre sans taxonomie superflue ; Formulaire de candidature avec upload de CV natif ; Notification à l'équipe sans extension de formulaire tierce

## Le formulaire de candidature, sans extension de formulaire

Plutôt que d'installer une extension de formulaire généraliste pour un besoin aussi ciblé, le formulaire est codé directement dans le template `single-offre_emploi.php`, avec un traitement côté serveur qui vérifie le nonce et gère l'upload du CV via `wp_handle_upload()`.

```
if ( isset( $_POST['candidature_nonce'] ) && wp_verify_nonce( $_POST['candidature_nonce'], 'envoi_candidature' ) ) {
    $fichier = wp_handle_upload( $_FILES['cv'], array( 'test_form' => false ) );

    if ( ! isset( $fichier['error'] ) ) {
        wp_mail(
            get_option( 'admin_email' ),
            'Nouvelle candidature reçue',
            sprintf( 'Candidat : %s, CV : %s', sanitize_text_field( $_POST['nom'] ), esc_url( $fichier['url'] ) )
        );
    }
}
```

Trois champs seulement : nom, adresse email, et fichier CV. L'agence avait initialement demandé une dizaine de champs (lettre de motivation, prétentions salariales, disponibilité), mais les tests menés sur deux offres ont montré un taux d'abandon nettement supérieur avec le formulaire complet — le formulaire court a été retenu pour la version définitive.

## Restreindre les formats de fichiers acceptés

Pour éviter qu'un candidat n'envoie un format inexploitable, le champ d'upload est contraint côté HTML avec l'attribut `accept`, et revérifié côté serveur avec `wp_check_filetype()` avant l'appel à `wp_handle_upload()`, afin de ne pas se fier uniquement à la validation du navigateur.

- Formats acceptés : PDF et DOCX uniquement, pour rester compatible avec les logiciels de l'agence.
- Taille maximale contrôlée via une constante `MAX_FILE_SIZE` ajoutée au formulaire et revérifiée en PHP.
- Fichiers stockés dans un répertoire dédié de la bibliothèque de médias, avec des permissions d'accès restreintes.

## La notification, sans tableau de bord tiers

Chaque candidature déclenche un email à l'équipe recrutement via `wp_mail()`, avec le lien direct vers le CV stocké. Pour garder une trace structurée sans base de données externe, chaque candidature est également enregistrée comme un type de contenu `candidature` non public, visible uniquement dans l'administration, avec l'offre associée en relation via un champ personnalisé.

> Pour une agence qui traite un flux raisonnable de candidatures, je recommande toujours de commencer par cette approche minimale avant d'envisager un outil de gestion des candidatures dédié : elle coûte une fraction du prix et couvre l'essentiel du besoin réel.

## En résumé

Une page carrière efficace n'a pas besoin d'un jobboard complet pour convertir. Un type de contenu simple, un formulaire réduit à l'essentiel et une notification directe suffisent à couvrir le besoin d'une agence de recrutement de taille moyenne, sans les coûts et la complexité d'une solution dimensionnée pour un tout autre volume.
