Standardmäßig ist beim Import mit OpenImmo2WP nur die automatisierte Zuordnung vorhandener, aber nicht die Erstellung neuer Agenten möglich.
Diese Funktion kann aber über den Action-Hook immonex_oi2wp_property_imported
ergänzt werden.
Folgend ein Beispiel für das Houzez-Theme (anpassbar an andere Themes):
/**
* [immonex OpenImmo2WP] Prüfen, ob der Name des zugeordneten Objekt-Ansprechpartners
* mit den übermittelten Angaben übereinstimmt - falls nicht: Neuen Ansprechpartner
* anlegen und mit Objekt und Agentur verknüpfen (Houzez-Theme).
*/
function mysite_maybe_add_property_agent( $property_id, $immobilie ) {
$xml_contact_name = (string) $immobilie->kontaktperson->vorname . ' ' .
$immobilie->kontaktperson->name;
$current_agent_id = get_post_meta( $property_id, 'fave_agents', true );
if ( $current_agent_id ) {
$current_agent = get_post( $current_agent_id );
if ( $current_agent ) {
if ( $current_agent->post_title === $xml_contact_name ) {
// Passender Ansprechpartner bereits verknüpft: hier abbrechen.
return;
}
}
}
/**
* Kein passender Ansprechpartner verknüpft: Neuen Agenten anlegen
* und aktueller Agentur zuordnen.
*/
$xml_email = (string) $immobilie->kontaktperson->email_direkt;
if ( ! $xml_email ) {
$xml_email = (string) $immobilie->kontaktperson->email_zentrale;
}
$xml_phone = (string) $immobilie->kontaktperson->tel_durchw;
if ( ! $xml_phone ) {
(string) $immobilie->kontaktperson->tel_zentrale;
}
$xml_phone_mobile = (string) $immobilie->kontaktperson->tel_handy;
$xml_company = (string) $immobilie->kontaktperson->firma;
$agent = array(
'post_type' => 'houzez_agent',
'post_status' => 'publish',
'post_title' => $xml_contact_name
);
$agent_id = wp_insert_post( $agent );
if ( is_wp_error( $agent_id ) ) {
// Fehler beim Anlegen des neuen Ansprechpartners: hier aussteigen!
return;
} else {
add_post_meta( $agent_id, 'fave_agent_email', $xml_email );
add_post_meta( $agent_id, 'fave_agent_office_num', $xml_phone );
add_post_meta( $agent_id, 'fave_agent_company', $xml_company );
if ( $xml_phone_mobile ) {
add_post_meta( $agent_id, 'fave_agent_mobile', $xml_phone_mobile );
}
if ( $immobilie->kontaktperson->foto->daten->pfad ) {
// Foto ergänzen.
mysite_add_agent_photo(
$agent_id,
$immobilie->kontaktperson->foto,
$xml_contact_name
);
}
}
$agency_id = false;
$property = get_post( $property_id );
$author_id = $property && $property->post_author ? $property->post_author : false;
if ( $author_id ) {
// Agentur-ID des WP-Benutzers übernehmen, sofern vorhanden.
$agency_id = get_user_meta( $author_id, 'fave_author_agency_id', true );
}
if ( ! $agency_id ) {
// Agentur (WP) anhand angegebener Firma ermitteln.
if ( ! empty( $xml_company ) ) {
$agencies = get_posts( array(
'post_type' => 'houzez_agency',
'post_title' => $xml_company,
'numberposts' => -1
) );
if ( count( $agencies ) > 0 ) {
$agency_id = $agencies[0]->ID;
}
}
}
if ( $agency_id ) {
// Agentur-ID neuem Ansprechpartner und aktuellem Objekt zuordnen.
update_post_meta( $agent_id, 'fave_agent_agencies', $agency_id );
update_post_meta( $property_id, 'fave_property_agency', $agency_id );
}
// Neuen Ansprechpartner aktuellem Objekt zuordnen und entspr. Display-Option aktivieren.
update_post_meta( $property_id, 'fave_agents', $agent_id );
update_post_meta( $property_id, 'fave_agent_display_option', 'agent_info' );
}
add_action( 'immonex_oi2wp_property_imported', 'mysite_maybe_add_property_agent', 90, 2 );
function mysite_add_agent_photo( $agent_post_id, $foto, $name ) {
global $immonex_openimmo2wp;
$dir = $immonex_openimmo2wp->current_import_status['dir'];
if ( is_object( $foto ) ) {
$path_or_url = (string) $foto->daten->pfad;
$is_remote = 'REMOTE' === strtoupper( (string) $foto['location'] )
|| false !== strpos( $path_or_url, '://' );
} else {
$path_or_url = $foto;
$is_remote = false !== strpos( $path_or_url, '://' );
}
if ( ! $is_remote ) {
$path_or_url = "{$dir}/{$path_or_url}";
if ( ! file_exists( $path_or_url ) ) {
// Lokale Bilddatei nicht verfügbar.
return;
}
}
if ( $is_remote ) {
$temp = download_url( $path_or_url );
if ( is_wp_error( $temp ) ) {
return;
}
$file_data = array(
'name' => basename( $path_or_url ),
'tmp_name' => $temp,
);
} else {
$temp = tmpfile();
fwrite( $temp, file_get_contents( $path_or_url ) );
$file_data = array(
'name' => basename( $path_or_url ),
'tmp_name' => stream_get_meta_data( $temp )['uri'],
);
}
$photo_id = media_handle_sideload( $file_data, $agent_post_id, $name );
if ( $photo_id && ! is_wp_error( $photo_id ) ) {
set_post_thumbnail( $agent_post_id, $photo_id );
}
if ( ! empty( $temp ) && is_string( $temp ) && file_exists( $temp ) ) {
@unlink( $temp );
}
}