Absatzüberschriften in Beschreibungstexten ergänzen

Die meisten Immobilien-Themes stellen keine separaten Felder für die Beschreibung des Objekts sowie dessen Lage und Ausstattung bereit. Aus diesem Grund werden die entsprechenden OpenImmo-Details beim Import meist in einem einzelnen Text zusammengefügt.

Diese kombinierten Abschnitte enthalten normalerweise keine Überschriften oder anderweitige Trennelemente. Textfelder, wie Lagebeschreibung, werden standardmäßig an die Beschreibung angehangen.

Über einen Filter können einzelne Texte mit eigener Überschrift versehen werden:

/**
 * Absatzüberschriften in der Haupt-Immobilienbeschreibung hinzufügen
 */
function mysite_add_section_headlines( $value, $immobilie, $mapping ) {
  if ( ! trim( $value ) ) {
    return $value;
  }
 
  switch( $mapping['source'] ) {
    case 'freitexte->objektbeschreibung+':
      $value = '<h4 class="additional-title">Objektbeschreibung</h4>' . "\n$value\n";
      break;
    case 'freitexte->lage+':
      $value = '<h4 class="additional-title">Lage</h4>' . "\n$value\n";
      break;
    case 'freitexte->ausstatt_beschr+':
      $value = '<h4 class="additional-title">Ausstattung</h4>' . "\n$value\n";
      break;
    case 'freitexte->sonstige_angaben+':
      $value = '<h4 class="additional-title">Sonstiges</h4>' . "\n$value\n";
      break;
  }
 
  return $value;
}
add_filter( 'immonex_oi2wp_add_post_data_element', 'mysite_add_section_headlines', 10, 3 );
 
/**
 * Erlaubte HTML-Tags für Beitragsinhalte beim automatisierten Import ergänzen
 */
function mysite_kses_add_allowed_html_tags( $allowed_tags, $context ) {
  if ( 'post' === $context ) {
    $tags = array( 'br', 'p', 'div', 'span', 'strong', 'b', 'i', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'li', );
    foreach( $tags as $tag ) {
      $allowed_tags = array_merge( $allowed_tags, array(
        $tag => array( 'id' => true, 'class' => true, 'style' => true, )
      ) );
    }
  }
 
  return $allowed_tags;
}
add_filter( 'wp_kses_allowed_html', 'mysite_kses_add_allowed_html_tags', 10, 2 );

Alternativ könnten die Lagebeschreibung, Ausstattungsbeschreibung etc. auch problemlos separaten Custom Fields zugewiesen werden. Hierfür käme dann eine individuell angepasste Version der Mapping-Tabelle zum Einsatz, siehe Individuelle Mapping-Tabelle.

Mehrsprachigkeit

In Verbindung mit dem immonex OpenImmo2WP-Multilang-Add-on kann folgende Version verwendet werden, diese berücksichtigt Übersetzungen der Begriffe:

/**
 * Mehrsprachige Absatzüberschriften in der Haupt-Immobilienbeschreibung hinzufügen
 */
function mysite_add_section_headlines_ml( $value, $immobilie, $mapping ) {
  global $immonex_openimmo2wp;
 
  if ( ! isset( $immonex_openimmo2wp ) ) {
    return $value;
  }
 
  $cil = $immonex_openimmo2wp->current_import_language;
 
  $all_translations = array(
    'de' => array(
      'Property Description' => 'Objektbeschreibung',
      'Location'             => 'Lage',
      'Features'             => 'Ausstattung',
      'Miscellaneous'        => 'Sonstiges'
    ),
    
    // bei Bedarf Übersetzungen in weiteren Sprachen hier ergänzen...
    /*
    'es' => array(
      'Property Description' => 'Descripción',
      'Location'             => 'Ubicación',
      'Features'             => 'Caracteristicas',
      'Miscellaneous'        => 'Misceláneo'
    ),
    */
  );
 
  if ( isset( $all_translations[$cil] ) ) {
    $translations = $all_translations[$cil];
  } else {
    $temp = array_shift( $all_translations );
    $translations = array();
    foreach ( $temp as $source => $translation ) {
      $translation[$source] = $source;
    }
  }
 
  switch( $mapping['source'] ) {
    case 'freitexte->objektbeschreibung+' :
      $value = '<h4 class="additional-title">' . $translations['Property Description'] . '</h4>' . "\n$value\n";
      break;
    case 'freitexte->lage+':
      $value = '<h4 class="additional-title">' . $translations['Location'] . '</h4>' . "\n$value\n";
      break;
    case 'freitexte->ausstatt_beschr+' :
      $value = '<h4 class="additional-title">' . $translations['Features'] . '</h4>' . "\n$value\n";
      break;
    case 'freitexte->sonstige_angaben+' :
      $value = '<h4 class="additional-title">' . $translations['Miscellaneous'] . '</h4>' . "\n$value\n";
      break;
  }
 
  return $value;
}
add_filter( 'immonex_oi2wp_add_post_data_element', 'mysite_add_section_headlines_ml', 10, 3 );