L'API Email Fields a été introduite dans la version 1.5 et offre une manière plus propre d'ajouter de nouveaux tags d'e-mail ou de modifier ceux existants.
Définir un champ
Un champ d'e-mail est défini comme un tableau avec quelques arguments, et une clé qui est utilisée pour le paramètre show dans le shortcode [charitable_email].

Arguments
description: La description qui sera affichée pour le tag d'e-mail.preview: La valeur du placeholder qui sera utilisée pour ce tag d'e-mail dans les aperçus d'e-mail.callback: Une fonction qui sera exécutée pour obtenir la valeur du tag pour un e-mail particulier.value: Une valeur fixe pour le tag d'e-mail. Si elle est définie,callbackne sera pas utilisé et n'est pas requis.
De plus, un champ d'e-mail a une key qui sera utilisée lorsque le tag sera ajouté.
Arguments de rappel
La fonction de rappel recevra trois arguments :
$value: La valeur par défaut (une chaîne vide). Ceci est fourni principalement à des fins de compatibilité ascendante.$args: Les arguments du shortcode. Cela inclura toujours le paramètreshow, mais peut inclure d'autres arguments si ceux-ci sont applicables au tag d'e-mail.$email: Une instance deCharitable_Email. Vous pouvez l'utiliser pour obtenir les objets associés à l'e-mail (généralement l'un deCharitable_Campaign,Charitable_DonationouCharitable_User).
Ajouter un champ d'e-mail de campagne
Les champs d'e-mail de campagne peuvent être ajoutés en utilisant le filtre charitable_email_campaign_fields :
function ed_charitable_email_campaign_field_callback( $value, $args, $email ) {
$campaign = $email->get_campaign();
return $campaign->get( 'some_field' );
}
function ed_charitable_add_email_campaign_field( $fields ) {
$fields['some_field'] = array(
'description' => 'A description of this field',
'preview' => 'Placeholder value',
'callback' => 'ed_charitable_email_campaign_field_callback',
);
return $fields;
}
add_filter( 'charitable_email_campaign_fields', 'ed_charitable_add_email_campaign_field' );
Ajouter un champ d'e-mail de don
Les champs d'e-mail de don peuvent être ajoutés en utilisant le filtre charitable_email_donation_fields :
function ed_charitable_email_donation_field_callback( $value, $args, $email ) {
$donation = $email->get_donation();
return $donation->get( 'some_field' );
}
function ed_charitable_add_email_donation_field( $fields ) {
$fields['some_field'] = array(
'description' => 'A description of this field',
'preview' => 'Placeholder value',
'callback' => 'ed_charitable_email_donation_field_callback',
);
return $fields;
}
add_filter( 'charitable_email_donation_fields', 'ed_charitable_add_email_donation_field' );
Ajouter un champ d'e-mail utilisateur
La définition d'un nouveau champ d'e-mail utilisateur suit exactement le même processus, mais avec le filtre charitable_email_user_fields :
function ed_charitable_email_user_field_callback( $value, $args, $email ) {
$user = $email->get_user();
return $user->get( 'some_field' );
}
function ed_charitable_add_email_user_field( $fields ) {
$fields['some_field'] = array(
'description' => 'A description of this field',
'preview' => 'Placeholder value',
'callback' => 'ed_charitable_email_user_field_callback',
);
return $fields;
}
add_filter( 'charitable_email_user_fields', 'ed_charitable_add_email_user_field' );
Modifier les champs d'e-mail existants
Les champs d'e-mail existants peuvent également être modifiés avec ces filtres. Par exemple, vous pouvez l'utiliser pour changer le callback d'un tag existant, ou pour modifier la description.
Changer le rappel d'un champ
function ed_charitable_donor_address_email_field_callback( $value, $args, $email ) {
// Return the donor's address.
}
function ed_charitable_set_donor_address_email_field_callback( $fields ) {
$fields['donor_address']['callback'] = 'ed_charitable_donor_address_email_field_callback';
return $fields;
}
add_filter( 'charitable_email_donation_fields', 'ed_charitable_set_donor_address_email_field_callback' );
Changer la description d'un champ
function ed_charitable_set_user_login_email_field_description( $fields ) {
$fields['user_login']['description'] = 'My user login description';
return $fields;
}
add_filter( 'charitable_email_donation_fields', 'ed_charitable_set_user_login_email_field_description' );





