Die E-Mail-Felder-API wurde in Version 1.5 eingeführt und bietet eine sauberere Möglichkeit, neue E-Mail-Tags hinzuzufügen oder vorhandene zu ändern.
Definieren eines Feldes
Ein E-Mail-Feld wird als Array mit einigen Argumenten und einem Schlüssel definiert, der für den show -Parameter im [charitable_email] -Shortcode verwendet wird.

Argumente
description: Die Beschreibung, die für das E-Mail-Tag angezeigt wird.preview: Der Platzhalterwert, der für dieses E-Mail-Tag in E-Mail-Vorschauen verwendet wird.callback: Eine Funktion, die ausgeführt wird, um den Tag-Wert für eine bestimmte E-Mail zu erhalten.value: Ein fester Wert für das E-Mail-Tag. Wenn dieser gesetzt ist, wirdcallbacknicht verwendet und ist nicht erforderlich.
Zusätzlich hat ein E-Mail-Feld einen key, der verwendet wird, wenn das Tag hinzugefügt wird.
Callback-Argumente
Die Callback-Funktion erhält drei Argumente:
$value: Der Standardwert (eine leere Zeichenkette). Dieser wird hauptsächlich aus Gründen der Abwärtskompatibilität bereitgestellt.$args: Die Shortcode-Argumente. Dies beinhaltet immer denshow-Parameter, kann aber auch andere Argumente enthalten, wenn diese für das E-Mail-Tag relevant sind.$email: Eine Instanz vonCharitable_Email. Sie können diese verwenden, um die mit der E-Mail verbundenen Objekte abzurufen (normalerweise eine vonCharitable_Campaign,Charitable_DonationoderCharitable_User).
Hinzufügen eines Kampagnen-E-Mail-Feldes
Kampagnen-E-Mail-Felder können mit dem charitable_email_campaign_fields -Filter hinzugefügt werden:
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' );
Hinzufügen eines Spenden-E-Mail-Feldes
Spenden-E-Mail-Felder können mit dem charitable_email_donation_fields -Filter hinzugefügt werden:
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' );
Hinzufügen eines Benutzer-E-Mail-Feldes
Das Definieren eines neuen Benutzer-E-Mail-Feldes folgt dem exakt gleichen Prozess, jedoch mit dem charitable_email_user_fields -Filter:
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' );
Ändern bestehender E-Mail-Felder
Bestehende E-Mail-Felder können ebenfalls mit diesen Filtern geändert werden. Sie können dies beispielsweise verwenden, um den callback für ein vorhandenes Tag zu ändern oder die Beschreibung zu bearbeiten.
Ändern des Callbacks eines Feldes
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' );
Ändern der Beschreibung eines Feldes
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' );





