Über folgenden Action-Hook können Objekte mit dem Status verkauft
in portfolio
(Referenzen) geändert werden:
/**
* Beitragstyp von Objekten mit Status "verkauft" etc. in "portfolio" (Referenzen) ändern
* und Taxonomie-Terms konvertieren
*/
function mysite_update_post_type( $post_id, $immobilie ) {
$convert_taxonomies = array(
'offertype' => 'referencecat',
'proptype' => 'referencetype',
'location' => 'reflocation'
);
if ( in_array( (string) $immobilie->zustand_angaben->verkaufstatus['stand'], array( 'VERKAUFT', 'VERMIETET' ) ) ) {
$post = get_post( $post_id );
if ( $post ) {
$obid = trim( (string) $immobilie->verwaltung_techn->openimmo_obid );
$meta_query = array(
'relation' => 'AND',
array(
'key' => '_is_immonex_import_property',
'compare' => 'EXISTS'
),
array(
'key' => '_openimmo_obid',
'value' => trim( $obid )
)
);
$args = array(
'post_type' => 'portfolio',
'post_status' => array( 'publish', 'draft', 'pending', 'future' ),
'meta_query' => $meta_query,
'numberposts' => -1
);
$existing_reference_posts = get_posts( $args );
if ( count( $existing_reference_posts ) > 0 ) {
// Vorhandene Referenzobjekte mit gleicher ID löschen.
foreach ( $existing_reference_posts as $ref_post ) {
wp_delete_post( $ref_post->ID, true );
}
}
$post->post_type = 'portfolio';
if ( wp_update_post( $post ) ) {
// Taxonomie-Begriffe konvertieren bzw. kopieren
foreach ( $convert_taxonomies as $source => $dest ) {
if ( ! get_taxonomy( $source ) || ! get_taxonomy( $dest ) ) continue;
$source_terms = wp_get_post_terms( $post_id, $source );
if ( count( $source_terms ) > 0 ) {
foreach ( $source_terms as $source_term ) {
$dest_term = get_term_by( 'name', $source_term->name, $dest );
if ( empty( $dest_term ) ) {
$new_term = wp_insert_term( $source_term->name, $dest );
if ( ! is_wp_error( $new_term ) ) {
wp_set_object_terms( $post_id, $new_term['term_id'], $dest, true );
}
} else {
wp_set_object_terms( $post_id, $dest_term->term_id, $dest, true );
}
}
}
}
}
}
}
}
add_action( 'immonex_oi2wp_property_imported', 'mysite_update_post_type', 10, 2 );
Für Theme BO Beladomo
.