Immobilien Plugins für WordPress – immonex WordPress-Plugins › Foren › immonex OpenImmo2WP › Properties einer speziellen Taxonomie auf Status ‚private‘ setzen
- Dieses Thema hat 2 Antworten und 2 Stimmen, und wurde zuletzt aktualisiert vor 1 Jahr von
Alexander Berg.
-
AutorBeiträge
-
26. September 2022 um 9:19 #19342
Alexander Berg
TeilnehmerHallo Zusammen,
Theme: Child Theme von Realhomes
Mapping Tabelle: individuellProblem:
Beim XML-Import wird auch das Projekt, dem die Immobilien zugeordnet sind, mit übertragen und auf den Immobilienarchiv-Seiten angezeigt. Da sollen nur Wohnungen/ Immobilien zu sehen sein.
Mit Hilfe eures Skripts (klappt prima) vom Juni ordnen wir den Projekten einen extra Taxonomy-Term zu (‚Master-Projekt‘) und versuchen nun, diese Properties beim Import auf Status ‚private‘ zu setzen.Momentan werden alle importierten Immobilien auf ‚private‘ gesetzt, hier fehlt die „Verknüpfung“ Posts <-> Post-Meta, ist so was machbar?
Lieben Dank für einen Tipp
Skript:
PHP1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253add_action( 'immonex_oi2wp_property_imported', 'ks_add_project_tax_term', 10, 2 );function ks_add_project_tax_term( $post_id, $immobilie ) {$taxonomy = 'projekt'; // Name der Ziel-Taxonomie$property_id = get_post_meta( $post_id, 'REAL_HOMES_property_id', true );if ( ! $property_id ) {return;}$term_work_name = '';if ( strlen( $property_id ) > 7 ) {$term_work_name = substr( $property_id, 0, 8 ); // erste acht Zeichen der Objekt-ID übernehmen}$term_name = '';if ( ! empty ( $term_work_name ) ) {if ( substr_compare( $term_work_name, 'AB12345/', 0) === 0 ) {$term_name = 'Aktuelles Projekt';} else {$term_name = 'Sonstige Projekte';}} else {$term_name = 'Master-Projekt';$term = get_term_by( 'name', $term_name, $taxonomy );if ( empty( $term ) ) {$new_term = wp_insert_term( $term->name, $taxonomy );if ( ! is_wp_error( $new_term ) ) {wp_set_object_terms( $post_id, $new_term['term_id'], $taxonomy, false );}} elseif ( $term_name = 'Master-Projekt') {wp_set_object_terms( $post_id, $term->term_id, $taxonomy, false );// ab hier setze Seiten-Status privat auf die Projekteglobal $immonex_openimmo2wp;if ( ! isset( $immonex_openimmo2wp ) ) return $immobilie;$obid = trim( (string) $immobilie->verwaltung_techn->openimmo_obid );$properties = $immonex_openimmo2wp->get_property_by_openimmo_obid( $obid );if ( ( is_array( $properties ) && count( $properties ) > 0 ) && ( $term = 'Master-Projekt' ) ) {// Vorhandenes Objekt aktualisieren.$property = $properties[0];$property->post_status = 'private';wp_update_post( $property );}return $immobilie;} else {wp_set_object_terms( $post_id, $term->term_id, $taxonomy, false );}}} // ks_add_project_tax_term26. September 2022 um 12:13 #19351Carsten Scheuer
VerwalterHallo Alexander,
bei der Funktion ist das Anlegen (sofern noch nicht vorhanden) und die Zuweisung des betr. Terms (+ Status) etwas durcheinander geraten. Außerdem ist es hier nicht notwendig, die ID des Immobilien-Beitrags noch einmal neu zu ermitteln, da diese bereits über den Action-Hook übergeben wird.
Ich habe den Code mal etwas geordnet, die Funktion müsste in etwa so aussehen (ungetestet!):
PHP1234567891011121314151617181920212223242526272829303132333435363738394041424344add_action( 'immonex_oi2wp_property_imported', 'ks_add_project_tax_term', 10, 2 );function ks_add_project_tax_term( $post_id, $immobilie ) {$taxonomy = 'projekt'; // Name der Ziel-Taxonomie$property_id = get_post_meta( $post_id, 'REAL_HOMES_property_id', true );if ( ! $property_id ) {return;}$term_work_name = '';if ( strlen( $property_id ) >= 7 ) {$term_work_name = substr( $property_id, 0, 8 ); // erste acht Zeichen der Objekt-ID übernehmen}$term_name = 'Master-Projekt';if ( ! empty ( $term_work_name ) ) {if ( 0 === substr_compare( $term_work_name, 'AB12345/', 0 ) ) {$term_name = 'Aktuelles Projekt';} else {$term_name = 'Sonstige Projekte';}}$term = get_term_by( 'name', $term_name, $taxonomy );if ( empty( $term ) ) {$new_term = wp_insert_term( $term->name, $taxonomy );if ( ! is_wp_error( $new_term ) ) {wp_set_object_terms( $post_id, $new_term['term_id'], $taxonomy, false );}} else {wp_set_object_terms( $post_id, $term->term_id, $taxonomy, false );}if ( 'Master-Projekt' === $term_name ) {// Vorhandenes Objekt aktualisieren.wp_update_post( array('ID' => $post_id,'post_status' => 'private') );}} // ks_add_project_tax_term26. September 2022 um 13:25 #19353Alexander Berg
TeilnehmerHallo Carsten,
danke für Deine superschnelle Antwort und klasse, funktioniert 1a
Top Support!
-
AutorBeiträge
- Du musst angemeldet sein, um zu diesem Thema eine Antwort verfassen zu können.