Objektdaten einer Immobilie in CF7-Formularmails einbinden:
/**
* [immonex OpenImmo2WP/Kickstart + Contact Form 7 (CF7)] Custom Mail Tags zum Einbinden
* von Immobiliendaten anhand des Mapping-Namens ergänzen, Format: [inx.mapping_name].
*
* Beispiele:
*
* [inx.primaerpreis]
* [inx.primaerflaeche]
* [inx.ausstattung.heizungsart]
* [inx.preise.kaltmiete]
*/
function inx_cf7_property_tag ( $replaced, $submitted, $html, $mail_tag ) {
global $inx;
if (
! isset( $inx )
|| 'inx.' !== substr( $mail_tag->tag_name(), 0, 4 )
) {
return $replaced;
}
// Objekt-Beitrags-ID anhand der URL ermitteln (reguläre Post-ID könnte die einer Template-Seite sein).
$submission = WPCF7_Submission::get_instance();
$property_id = url_to_postid( $submission->get_meta( 'url' ) );
if ( ! $property_id ) {
return '';
}
$mapping_name = substr( $mail_tag->tag_name(), 4 );
$value = apply_filters( 'inx_get_property_detail_item', false, $property_id, [ 'name' => $mapping_name ] );
if ( $value && ! empty( $value['value_formatted'] ) ) {
/**
* Formatierten Wert aus dem "Sammelfeld" _inx_details übernehmen
* (Destination-Feld in Mapping-Tabelle leer).
*/
return $value['value_formatted'];
}
/**
* Wert aus einem separaten Custom Field abrufen, sofern vorhanden
* (Feldname in Destination-Feld).
*/
// Zunächst den Custom-Field-Namen anhand des Mapping-Namens ermitteln.
$cf_name = $inx->utils['data']->get_custom_field_by( 'mapping_name', $mapping_name, $property_id, true );
if ( ! $cf_name ) {
return '';
}
$value = get_post_meta( $property_id, $cf_name, true );
if ( ! $value ) {
return '';
}
if ( is_numeric( $value ) ) {
$value = number_format_i18n( floatval( $value ), 2 );
}
if ( 'preis' === substr( $mapping_name, -5 ) ) {
$value .= ' ' . $inx->currency_symbol;
} elseif ( 'flaeche' === substr( $mapping_name, -6 ) ) {
$value .= ' ' . $inx->area_unit;
}
return $value;
}
add_filter( 'wpcf7_mail_tag_replaced', 'inx_cf7_property_tag', 10, 4 );
Das immonex Kickstart Team-Add-on deckt Formulare in Objekten von Haus aus ab!