Trente-deux reçus fiscaux à préparer à la main chaque fin d’année : c’est le problème rapporté par la trésorière d’une petite association culturelle, qui utilisait jusque-là un modèle Word rempli manuellement pour chaque don reçu via le site. Le type de contenu personnalisé don, déjà utilisé pour enregistrer les dons ponctuels, contenait toutes les données nécessaires — il ne manquait qu’un bloc capable de les transformer en document.
La solution retenue génère le reçu au format PDF à la demande, directement depuis la fiche du don dans l’administration, avec un bouton dans le bloc dédié plutôt qu’un export manuel recopié dans un traitement de texte.
Le problème : des données présentes, mais jamais mises en forme
Chaque don créait déjà un article du type don, avec des champs personnalisés pour le montant, la date, le nom et l’adresse du donateur. Ces données existaient, mais rien ne les transformait en document conforme au modèle Cerfa n° 11580 attendu par l’administration fiscale pour justifier une réduction d’impôt.
Choisir une librairie de génération PDF adaptée à l’hébergement
Sur un hébergement mutualisé classique, sans accès à des binaires externes comme wkhtmltopdf, la librairie PHP dompdf reste un choix pragmatique : elle s’installe via Composer, ne nécessite aucune extension serveur particulière, et transforme un gabarit HTML/CSS simple en document PDF.
composer require dompdf/dompdf

Le snippet de génération
Le bloc affiche un bouton « Générer le reçu » dans le panneau latéral de l’article don. Au clic, une requête déclenche une action admin qui construit le PDF à partir d’un gabarit HTML reprenant les mentions obligatoires du Cerfa.
use Dompdf\Dompdf;
function wpmoderne_generer_recu_don( $don_id ) {
$montant = get_field( 'montant', $don_id );
$donateur = get_field( 'nom_donateur', $don_id );
$date_don = get_field( 'date_don', $don_id );
$numero = wpmoderne_prochain_numero_recu();
$html = sprintf(
'<h1>Reçu de don n° %1$s</h1>
<p>Association Les Ateliers du Fleuve, reconnue d\'intérêt général.</p>
<p>Reçu par : %2$s</p>
<p>Montant du don : %3$s €</p>
<p>Date du don : %4$s</p>
<p>Ce reçu est établi conformément à l\'article 200 du Code général des impôts.</p>',
esc_html( $numero ), esc_html( $donateur ), esc_html( $montant ), esc_html( $date_don )
);
$dompdf = new Dompdf();
$dompdf->loadHtml( $html );
$dompdf->setPaper( 'A4' );
$dompdf->render();
update_post_meta( $don_id, 'numero_recu', $numero );
file_put_contents(
wp_upload_dir()['path'] . "/recu-{$numero}.pdf",
$dompdf->output()
);
}
Numéroter les reçus sans doublon
La numérotation séquentielle des reçus, bien que non strictement obligatoire pour ce type de don, facilite grandement le suivi comptable de l’association. Un compteur stocké en option WordPress, incrémenté à chaque génération, évite les doublons même en cas de génération répétée du même reçu :
function wpmoderne_prochain_numero_recu() {
$numero = (int) get_option( 'wpmoderne_dernier_numero_recu', 0 ) + 1;
update_option( 'wpmoderne_dernier_numero_recu', $numero );
return str_pad( $numero, 5, '0', STR_PAD_LEFT );
}
Variantes possibles selon les besoins
- Envoi automatique du reçu par e-mail au donateur, via
wp_mail(), en pièce jointe, dès la confirmation du paiement. - Archivage systématique des reçus générés dans un dossier protégé, non accessible directement par URL, pour respecter la confidentialité des données du donateur.
- Génération groupée en fin d’année pour l’ensemble des dons de la période, utile pour les associations qui préfèrent un envoi unique plutôt qu’un envoi au fil de l’eau.
Ce que cet article ne couvre pas
La déclaration fiscale de l’association elle-même, ses obligations déclaratives annuelles auprès de l’administration, ne relèvent pas de ce bloc technique et demandent un accompagnement comptable dédié. La comptabilité complète de l’association, avec suivi des dépenses et bilan annuel, sort également très largement du périmètre de cette génération de reçus.
Pour aller plus loin
Ce type de bloc illustre bien l’intérêt d’un type de contenu personnalisé déjà en place : une fois les données structurées correctement dès la saisie du don, leur transformation en document devient un problème de mise en forme, pas de collecte. Le gain de temps pour une petite association bénévole reste considérable face à une saisie manuelle répétée chaque année.