Problem: I have 3 custom post types - Artists, Books, and Works on Paper. I have two one-to-many (O2M) relationships: Artists-Books where Artist is parent and Book is child, and Artists-Works On Paper where Artist is parent and Work on Paper is child. I'm using the Favorites plugin to allow my site visitors to add favorite Books and favorite Works on Paper. In the list of favorite posts, I would like to display information about the related Artist.
Solution: The best way to handle this is to use the Favorites plugin's filters API to filter the favorites list HTML. You can use the Toolset Post Relationships API toolset_get_related_posts to get information from related posts in that filter callback:
/**
* Toolset Support
* Filter the Favorites list information to display related Artiste info
* Currently supports Livres and Oeuvres Sur Papiers post types for Favorites
* Extendable by adding a case statement for new post type / relationship slug
* https://toolset.com/forums/topic/find-related-custom-post-type/
*/
add_filter( 'favorites/list/listing/html', 'custom_favorites_listing_html', 10, 4 );
function custom_favorites_listing_html($html, $markup_template, $post_id, $list_options)
{
// relationship slugs per favorite post type
$post_type = get_post_type( $post_id );
switch($post_type) {
case "livre":
$rel_slug = "livre_artiste";
break;
case "oeuvre-sur-papier":
$rel_slug = "oeuvre-sur-papier-artiste";
break;
default:
return $html;
};
// Get related posts with Toolset post relationships API
$children_args = [
'query_by_role' => 'parent',
'role_to_return' => 'child'
];
$children = toolset_get_related_posts( $post_id, $rel_slug, $children_args);
// Build a string of related post titles, separated by a comma,
// and concatenate it into response HTML, then return it
$child_titles = [];
if( $children && count( $children ) > 0 ) {
foreach( $children as $child ){
$child_titles[]= get_the_title($child);
}
return $html . implode(',', $child_titles);
}
// in case no related posts are found, return the default HTML
return $html;
}
Problem: I would like to create a custom shortcode that displays the number of child posts for the current parent post. I'm referencing an older ticket but it does not seem to work as expected.
Solution: Instead of the _wpcf_belongs_slug_id postmeta key, you must use the new post relationships API with post relationships created in Types 3.0+. A custom shortcode solution is available.
Problem: I would like to access the fields in a RFG within the loop of the parent post type.
Solution: You can use a View of RFGs with a post relationship filter to loop over RFGs, or you can use the post relationships API to query related posts. Then use the Types Render Field API to render individual fields from each RFG iteration.
Problem: I have a custom search View with post relationship filters for City and State, but some Cities never appear in the filters.
Solution: Be sure to provide default options for all search filters like number of bedrooms and number of bathrooms, otherwise, Cities without matching Properties will never appear in the filter options.