Question

My function does exactly what I want it to do: I'm trying to add/update meta fields in another post type when an "events" post is saved. Except the post needs to be updated twice for the information to update on the front end. What am I doing wrong?

  function bam_create_next_show_meta($post_id) {
        if(get_post_type() == 'tribe_events') {
            $meta = get_post_meta($post_id, $_artistMeta->$post_id, TRUE);
            $artists = unserialize($meta['_artistMeta'][0]);

            if($meta) {
                $event_link = get_permalink();
                $eventVenue = tribe_get_venue();
                if($eventVenue) {
                    $eventVenueSplit = explode (' ', $eventVenue, 3);
                    if($eventVenueSplit[0] == 'Centro' && $eventVenueSplit[1] == 'Cultural') {
                        $eventVenue = ' en C.C. '.$eventVenueSplit[2];
                    } elseif($eventVenueSplit[0] == 'Biblioteca') {
                        $eventVenue = ' en Bibl. '.$eventVenueSplit[1].' '.$eventVenueSplit[2];
                    } else {
                        $eventVenue = ' en '.$eventVenue;
                    }
                } else {
                    $eventVenue = '';
                }

                $eventStartDate = tribe_get_start_date($postID,false,'j');
                $eventStartMonth = tribe_get_start_date($postID,false,'M');

                $event_sort = tribe_get_start_date($postID,false,'Y-m-d');

                $es_eventStartMonth = strftime('%b', strtotime($eventStartMonth));

                $event_title = 'Proxima fecha: <span class="c1 me">'.$eventStartDate.' de '.$es_eventStartMonth.$eventVenue.'</span>';

                foreach ($artists['artistName'] as $artist) {
                    if($myid == $artist)
                        continue;
                    $output[] = $artist;
                    $myid = $artist;
                }

                global $post;

                $artistas = get_posts(array('post_type'=> 'artistas','post__in' => $output, 'posts_per_page' => -1));

                foreach($artistas as $artista) {
                    setup_postdata($post);

                    $artistID = $artista->ID;

                    $artist_event_id = get_post_meta($artistID, 'artistEventId', true);
                    $artist_event_link = get_post_meta($artistID, 'artistEventLink', true);
                    $artist_event_title = get_post_meta($artistID, 'artistEventTitle', true);
                    $artist_event_sort = get_post_meta($artistID, 'artistEventSort', true);

                    if(strtotime($artist_event_sort) >= $date_sort || $post_id == $artist_event_id) {
                        update_post_meta($artistID, 'artistEventId', $post_id, $artist_event_id);
                        update_post_meta($artistID, 'artistEventLink', $event_link, $artist_event_link);
                        update_post_meta($artistID, 'artistEventTitle', $event_title, $artist_event_title);
                        update_post_meta($artistID, 'artistEventSort', $event_sort, $artist_event_sort);                    
                    }
                }
            }
        }
    }

    add_action( 'save_post', 'bam_create_next_show_meta');

No correct solution

Licensed under: CC-BY-SA with attribution
Not affiliated with wordpress.stackexchange
scroll top