Par défaut, votre site aura une seule page de reçu de don, vers laquelle les donateurs seront automatiquement redirigés après avoir effectué leur don.
Vous pouvez utiliser la page de reçu générée automatiquement fournie par Charitable dès l'installation, ou vous pouvez spécifier une page particulière à utiliser comme page de reçu de don. Consultez le guide ci-dessous si vous n'êtes pas sûr de la manière de procéder :
Mais que faire si vous voulez utiliser une page de reçu différente pour différentes campagnes ? Ce n’est pas possible dès l'installation, mais grâce à la flexibilité intégrée de Charitable, il est possible d’y parvenir avec seulement deux fonctions PHP.
La solution
Notre solution ajoutera un nouveau champ à l'éditeur de campagne qui vous permettra de sélectionner une page statique comme page de reçu de don pour votre campagne. Sauf si vous choisissez une page spécifique, elle utilisera l'option par défaut, qui est celle définie dans Charitable > Paramètres > Général pour l'option « Page de reçu de don ».
J'expliquerai la solution ci-dessous, mais si vous voulez juste le code, vous pouvez le télécharger depuis Github :
https://github.com/Charitable/Charitable-Custom-Campaign-Receipt-Pages
Étape 1 : Ajouter notre fonction
Comme pour les deux derniers tutoriels, celui-ci commence par une fonction PHP qui s'exécutera lorsque le hook init sera appelé dans WordPress. init est un hook qui se produit tôt pendant le chargement de WordPress, avant que la page ne commence à s'afficher.
add_action( 'init', function() {
// Our code will go in here.
} );
Nous utilisons ici une fonction anonyme, ce qui est tout à fait acceptable tant que vous utilisez une version de PHP supérieure à 5.2.
Si vous n'êtes pas sûr de la manière d'ajouter cela à votre site, consultez notre guide :
Étape 2 : Ajouter le champ à l'éditeur de campagne
Nous pouvons maintenant ajouter notre paramètre « Page de reçu de don » en enregistrant un nouveau champ à l'aide de l'API des champs de campagne.
add_action( 'init', function() {
/**
* Create a new field as an instance of `Charitable_Campaign_Field`.
*
* See all available arguments at:
*
* @https://github.com/Charitable/Charitable/blob/ef9a468fbdd6fa83307abe6ac0c38896f625cf45/includes/fields/class-charitable-campaign-field.php
*/
$campaign_field = new Charitable_Campaign_Field( 'donation_receipt_page', array(
'label' => 'Donation Receipt Page',
'data_type' => 'meta',
'admin_form' => array(
'type' => 'select',
'required' => false,
'options' => array(
'default' => 'Use the default donation receipt page',
'pages' => array(
'options' => charitable_get_pages_options(),
'label' => 'Pages',
),
),
'default' => 'default',
'section' => 'campaign-donation-options',
),
'show_in_export' => true,
) );
/**
* Now, we register our new field.
*/
charitable()->campaign_fields()->register_field( $campaign_field );
} );
C'est la même approche que celle que nous avons utilisée dans les deux tutoriels précédents, donc si vous les avez lus, cela vous semblera assez familier. Une nouveauté réside dans la configuration du paramètre admin_form du champ :
'admin_form' => array(
'type' => 'select',
'required' => false,
'options' => array(
'default' => 'Use the default donation receipt page',
'pages' => array(
'options' => charitable_get_pages_options(),
'label' => 'Pages',
),
),
'default' => 'default',
'section' => 'campaign-donation-options',
),
Le type est défini sur select, ce qui signifie qu'un champ de sélection déroulante sera utilisé. Les champs de sélection nécessitent un ensemble d'options, qui sont passées sous forme de tableau. Notre tableau comprend d'abord un choix default, suivi d'une liste de pages, récupérées à l'aide de la fonction charitable_get_pages_options(). Si vous êtes familier avec HTML, la façon dont cela est structuré signifie que le tableau options à l'intérieur de pages crée un élément optgroup, avec label défini comme étiquette.

Étape 3 : Remplacer la page de reçu de don par défaut
Dans Charitable, l'URL du reçu de don pour un don particulier est récupérée comme suit :
charitable_get_permalink( 'donation_receipt_page', array(
'donation_id' => $donation_id,
) );
Cette fonction utilise à son tour l'API des points d'accès, qui fournit un moyen structuré de gérer les points d'accès importants au sein de Charitable, tels que les campagnes, les pages de dons, la page de connexion et la page de reçu de don.
Ce qui est important dans notre cas, c'est que le permalien retourné peut être filtré. Dans le cas de la page de reçu de don, le filtre à utiliser est charitable_permalink_donation_receipt_page. Il fournit deux paramètres :
$default– Le permalien par défaut à utiliser. Nous nous rabattrons sur celui-ci si la campagne n'a pas défini de page de reçu personnalisée, ou si elle utilise celui par défaut.$args– Un tableau contenant l'ID du don.
Étape 3a : Créer la structure de la fonction de rappel
Tout d'abord, examinons la structure de notre fonction de rappel :
/**
* Filter the page to redirect the donor to after making their donation.
*
* @param string $default The endpoint's URL.
* @param array $args Mixed set of arguments.
* @return string
*/
add_filter( 'charitable_permalink_donation_receipt_page', function( $default, $args ) {
// Code goes here.
}, 10, 2 } );
Comme vous pouvez le voir, nous définissons une fonction anonyme qui est accrochée au filtre charitable_permalink_donation_receipt_page. Il est important de noter que notre dernière ligne définit la fonction de rappel pour qu'elle fonctionne avec la priorité 10 (la valeur par défaut) et reçoive 2 paramètres.
Étape 3b : Obtenir la campagne pour le reçu du don
Le paramètre $args inclura une propriété donation_id. Nous l'utilisons pour obtenir un objet Charitable_Donation, et à son tour, nous l'utilisons pour obtenir l'objet Charitable_Campaign :
/**
* Get the donation object.
*/
$donation_id = isset( $args['donation_id'] ) ? $args['donation_id'] : get_the_ID();
$donation = charitable_get_donation( $donation_id );
/**
* Get the campaign that received the donation.
*/
$campaign_id = current( $donation->get_campaign_donations() )->campaign_id;
$campaign = charitable_get_campaign( $campaign_id );
Étape 3c : Obtenir la page de reçu du don de la campagne
Maintenant que nous avons un objet Charitable_Campaign, nous pouvons obtenir le paramètre de la page de reçu du don pour la campagne avec la méthode get() :
/**
* Get the campaign's donation receipt page.
*/
$receipt_page = $campaign->get( 'donation_receipt_page' );
Étape 3d : Vérifier s'il faut renvoyer l'URL du reçu par défaut
N'oubliez pas que vous pouvez définir la campagne pour qu'elle utilise le reçu par défaut. Il est également possible que vous n'ayez pas mis à jour votre campagne depuis l'ajout du paramètre Page de reçu du don, auquel cas la variable $receipt_page sera false. Si l'un de ces cas se présente, nous renverrons la variable $default car nous n'avons pas de reçu personnalisé pour cette campagne :
/**
* If we haven't set a donation receipt page or we chose
* the default option, return the default.
*/
if ( ! $receipt_page || 'default' == $receipt_page ) {
return $default;
}
Étape 3e : Renvoyer l'URL du reçu personnalisé
Si nous sommes toujours là à ce stade, cela signifie qu'une page de reçu personnalisée est définie pour cette campagne. Tout ce qu'il reste à faire est d'obtenir le permalien de cette page, puis d'y ajouter le donation_id, ainsi que donation_receipt. L'URL résultante ressemblera à ceci :
https://mysite.com/my-custom-receipt-page/?donation_id=123&donation_receipt=1
Voici comment nous procédons :
/**
* Get the permalink for the receipt page and then append
* the donation_id and donation_receipt arguments to it.
*/
$receipt_page_url = get_permalink( $receipt_page );
$receipt_page_url = add_query_arg(
array(
'donation_id' => $donation_id,
'donation_receipt' => 1,
),
$receipt_page_url
);
/**
* Return the escaped URL.
*/
return esc_url_raw( $receipt_page_url );
get_permalink est un plugin WordPress de base utilisé pour obtenir l'URL d'une page ou d'un article particulier. Nous l'utilisons comme base pour notre URL, puis nous y ajoutons les arguments de requête requis avec add_query_arg. Enfin, nous la renvoyons sous forme de valeur échappée avec esc_url_raw.
Étape supplémentaire : Configurer votre page de reçu de don personnalisée
Cette solution vous permet d'utiliser n'importe quelle page comme page de reçu de don. Il est probable que vous souhaitiez afficher des informations sur le don au donateur lorsqu'il arrive sur la page du reçu. Pour inclure cela, vous pouvez utiliser le shortcode [donation_receipt] ; il affichera les informations dynamiques du reçu qui sont normalement affichées sur les reçus Charitable.
Idées bonus pour personnaliser la page de reçu du don
Nous avons vu ici comment personnaliser la page de reçu du don sur une base par campagne. Mais que faire si vous souhaitez utiliser une page de reçu de don différente en fonction d'un autre facteur ?
Sur notre bibliothèque d'extraits de code, nous avons quelques extraits disponibles qui vous montrent comment utiliser un reçu de don différent dans d'autres scénarios :
- Utiliser un reçu de don différent pour les dons récurrents
- Utiliser un reçu de don différent pour les dons hors ligne (peut être adapté pour d'autres passerelles de paiement).
Vous avez une idée pour un autre tutoriel ?
Si vous avez une idée pour un autre tutoriel, j'aimerais beaucoup l'entendre ! Laissez un commentaire ci-dessous ou contactez-nous via notre page d'assistance.








Laisser un commentaire