OK Jeff,
I think some of this you can do yourself, there is really just one step that is problematic that will require a custom solution, and I will address that below.
So, you make a Content Template to display single Performances and add your desired content to it.
You then want to add a view for your related performances.
This will actually require two views, nested.
The outer view which you add to your content template will return Artists. For the time being don't worry about adding a query filter, we will display all Artists for the time being. In the loop output section we don't output any content directly, but instead insert the shortcode for our inner view.
That inner view will return Performances, and needs the filter to show posts which are children of the current item in the loop. The loop output section is where you will add shortcodes to output whatever summary info you want to appear about your related performances.
Test that this works. Right now related performances should show ALL performances, because our outer loop is getting all the artists, and then the inner loop is showing all the performances for a given artist.
So what is needed now is some custom code to limit the artists retrieved in the outer view to only those required, e.g. to artists with taxonomy terms that match the parent artist of the performance being shown by the content template.
To do that we will need to modify the query for the outer artist view (so make a note of the id of that view).
Ordinarily I would at this point say we can use the wpv_filter_query filter to modify the query arguments but discovered (and reported) a bug whereby the filter isn't available if the view is added to a content template, which is the case here.
So, change of tack.
Where you add the outer view for the artists, we will use a custom shortcode to retrieve the ids of the related artists which we pass to our view via a shortcode argument, and then we need to add a query filter on that view which filters by post id, based upon the shortcode.
So, the outer view now has this filter: Include only posts with IDs set by the View shortcode attribute "ids" eg. [wpv-view name="view-name" ids="1"]
And our content template that calls this view will do so with a custom shortcode argument like so:
[wpv-view name="related-artists" ids="[related_artists]"]
And then here is the code for that custom shortcode.
/**
* Related Artists shortcode
*/
function related_artists_shortcode ( $atts ){
global $post;
$performance_id = $post->ID;
$parent_artist = get_post_meta( $performance_id, '_wpcf_belongs_artist_id', true );
$artist_genre = get_the_terms( $parent_artist, 'genre' );
$artist_genre_ids = "";
foreach ($artist_genre as $genre) {
$artist_genre_ids .= $genre->term_id . ",";
}
$artist_args = array(
'post_type' => 'artist',
'post_status' => 'publish',
'tax_query' => array(
array(
'taxonomy' => 'genre',
'field' => 'term_id',
'terms' => $artist_genre_ids
)
)
);
$related_artists = get_posts( $artist_args );
$related_artist_ids = "";
foreach ($related_artists as $related_artist) {
$related_artist_ids .= $related_artist->ID . ",";
}
return $related_artist_ids;
}
add_shortcode( 'related_artists', 'related_artists_shortcode' );
I tested this and it worked for me. If you have problems with it hopefully you will be able to solve them yourself or with your developer as I already spent longer than I ought to have on the solution.
Good luck!