0

I am trying to programmatically generate data in my wordpress site. I use WPAlchemy for my metaboxes and the posts-to-posts plugin for post-to-post relationships.

In my generation function, I am generating a custom post type called 'songs' to all be connected to one particular post of a post type called 'artists'. I am using p2p_type('songs_to_artist')->connect($song_id, $artist_id, ['date' => current_time ('mysql')]) to connect two posts for each song I generate. My problem is that after I have ran this function, I can no longer update artist meta data from my metabox in the backend edit post view.

I did some digging for myself and have found a few results:

  1. Everything works completely fine if I run the function without building the connection at the end of the function.
  2. All generated songs do get connected to their artist, despite the problem I'm having with the artist's meta data not updating.
  3. I can update meta data using the function update_post_meta() or by updating it directly in the DB.
  4. The described effect of meta data not updating happens after the 937th 'songs_to_artist' connection to that particular artist is created.
  5. No errors are being thrown in this process.

Has anyone else come across this? I can't find anything anywhere of anyone else describing this behavior.

Thank you so much in advance!

drkgrntt
  • 25
  • 1
  • 8

1 Answers1

0

The problem was that there was too much data rendering onto the edit page when too many connections were made, preventing postmeta from saving because the site was slowed down from all of the connection data. A simple fix for this is the following code:

add_filter( 'p2p_admin_box_show', 'toggle_connection_view', 10, 3 );
function toggle_connection_view( $show, $ctype, $post ) {

    if ( $ctype->name == 'songs_to_artist' ) {
        $show = false;
    }

    return $show;
}

This removed that particular card from the admin edit view, speeding things up tremendously and removing the problem I described.

drkgrntt
  • 25
  • 1
  • 8