OBIDs um Sprachcodes erweitern

Jede zu importierende Immobilie muss über ihre OBID (OpenImmo-Objekt-ID) eindeutig identifizierbar sein, auch wenn es sich hierbei nur um eine von mehreren Übersetzungen (Sprachvarianten) des gleichen Objekts handelt.

Überträgt die Maklersoftware grundsätzlich pro Objekt identische OBIDs für alle Sprachvarianten und lässt sich das auch nicht auf der Exportseite umstellen¹, muss eine Anpassung unmittelbar vor der eigentlichen Importverarbeitung innerhalb der WordPress-Website erfolgen.

Die folgende Filterfunktion stellt einen möglichen Lösungsansatz dar: Hiermit werden die OBIDs aller Objekte, deren Sprache nicht mit der Website-Standardsprache übereinstimmt, um den jeweiligen Objekt-Sprachcode ergänzt (XML-Element immobilie → verwaltung_techn → sprache, erster Teil).

/**
 * [immonex OpenImmo2WP] Filter: Sprachcode des Objekts an OBID anhängen, sofern
 * übermittelt und noch nicht in der OBID enthalten.
 * (Ausnahme: Objektsprache entspricht der Standardsprache der Website.)
 */
add_filter( 'immonex_oi2wp_property_obid', 'mysite_maybe_add_language_to_obid', 10, 2 );
function mysite_maybe_add_language_to_obid( $obid, $immobilie ) {
    if ( empty( $immobilie->verwaltung_techn->sprache ) ) {
        return $obid;
    }
    $property_language = strtolower( substr( (string) $immobilie->verwaltung_techn->sprache, 0, 2 ) );
    $default_language  = apply_filters( 'wpml_default_language', null );
    if (
        $property_language === $default_language
        || preg_match( "/[-_s.+*$!@#~/:;,]+{$property_language}$/i", $obid )
    ) {
        return $obid;
    }
    return "{$obid}-{$property_language}";
} // mysite_maybe_add_language_to_obid

Dieser Code kann entweder in der Datei functions.php des Child-Themes ("updatesicher") eingefügt oder per Code-Snippets-Plugin ergänzt werden.

Siehe auch


¹ In der Praxis sind eindeutige OBIDs der Standard und werden von allen gängigen Software-Branchenlösungen für Immobilienmakler unterstützt. Falls nötig – und möglich – sollte eine Umstellung immer auf dieser Seite erfolgen.