/**
* immonex Kickstart Shortcodes registrieren
*/
function mysite_register_property_shortcodes() {
add_shortcode( 'mysite-property-detail', 'mysite_shortcode_property_detail' );
add_shortcode( 'mysite-property-gallery', 'mysite_shortcode_property_gallery' );
}
add_action( 'after_setup_theme', 'mysite_register_property_shortcodes' );
/**
* Shortcode zum Einbinden einzelner Detailangaben
* Beispiel: [mysite-property-detail name="flaechen.wohnflaeche"]
*/
function mysite_shortcode_property_detail( $atts ) {
if ( empty( $atts['name'] ) ) {
return '';
}
$name = sanitize_key( $atts['name'] );
$property_id = apply_filters( 'inx_current_property_post_id', false );
$args = [
'name' => $name,
'value_only' => true,
];
if ( ! empty( $atts['group'] ) ) {
$args['group'] = sanitize_key( $atts['group'] );
}
// OpenImmo-Angabe anhand des Namens in der Mapping-Tabelle abrufen
$value = apply_filters(
'inx_get_property_detail_item',
false,
$property_id,
$args
);
if ( ! $value ) {
// alternativ: Wert eines Kickstart-spezifischen Custom Fields abrufen
$value = get_post_meta( $property_id, "_inx_{$name}", true );
}
if ( ! $value ) {
// Alternativ: Wert eines allgemeinen Custom Fields abrufen.
$value = get_post_meta( $property_id, $name, true );
if ( $value && '_inx_' === substr( $value, 0, 5 ) ) {
// Eigentlichen Wert aus ermitteltem Custom Field abrufen.
$value = get_post_meta( $property_id, $value, true );
}
}
if ( $value && ! empty( $atts['format'] ) ) {
$format = explode( ',', $atts['format'] );
foreach ( $format as $key ) {
$key = trim( strtolower( $key ) );
switch ( $key ) {
case 'number' :
if ( is_numeric( $value ) ) {
$value = number_format( $value, 2, ',', '.' );
}
break;
case 'currency' :
if ( is_numeric( $value ) ) {
$value = number_format( $value, 2, ',', '.' ) . ' €';
}
break;
// bei Bedarf weitere Formatierungsmöglichkeiten hier ergänzen...
}
}
}
return $value;
}
/**
* Shortcode zum Einbinden einer Gallerie des aktuellen Posts
* Beispiel: [mysite_shortcode_property_gallery]
*/
function mysite_shortcode_property_gallery( $atts ) {
$property_id = apply_filters( 'inx_current_property_post_id', false );
$atts_string = '';
if ( ! empty( $atts ) ) {
foreach ( $atts as $key => $value ) {
$atts_string .= wp_sprintf( '%s="%s" ', $key, $value );
}
$atts_string = trim( $atts_string );
}
$shortcode = wp_sprintf(
'',
$property_id,
$atts_string ? ' ' . $atts_string : ''
);
return do_shortcode( $shortcode );
}