Thread Starter
oudein
(@oudein)
scribu, thanks for the quick response! Sorry for my delayed one. I reread the wiki article on Related Posts — the wiki has been invaluable in using p2p — and tried it again, but it still only returns the project that I am viewing (although there are shared people with other projects).
The connection type is:
global $projects_to_people_connection;
$projects_to_people_connection = p2p_register_connection_type( array(
'from' => 'projects',
'to' => array('people'),
'context' => 'side',
'sortable' => '_order',
'prevent_duplicates' => true,
'title' => 'Project Members',
'fields' => array(
'project_lead' => array(
'title' => 'Project Lead',
'values' => array(
'1' => 'Lead',
'0' => ''
)
),
'project_contact' => array(
'title' => 'Project Contact',
'values' => array(
'1' => 'Contact',
'0' => ''
)
)
)
) );
The related posts function is:
function get_project_associated_people( $post_id ) {
global $projects_to_people_connection;
$related_pages = $projects_to_people_connection->get_connected( $post_id );
if ( !$related_pages->have_posts() )
return array();
$page_id = $related_pages->posts[0]->ID;
return $projects_to_people_connection->get_connected( $page_id, array(
'post__not_in' => array( $post_id ),
) );
}
And the call is:
<?php global $get_project_associated_people; ?>
<aside>
<h2>Related Projects via get_project_associated_people</h2>
<?php p2p_list_posts(get_project_associated_people( get_queried_object_id() )) ?>
<figure>
<?php if ( has_post_thumbnail()) :?>
<a href="<?php get_permalink(); ?>" title="<?php the_title_attribute('echo=0');?>" >
<?php clean_wp_width_height(get_the_post_thumbnail(get_the_ID(),'large'));
<figcaption><?php the_title_attribute(); ?></figcaption>
</a>
</figure>
<?php wp_reset_postdata();?>
</aside>
Again, I have no problem returning the people associated with the project, or getting the metadata assigning the lead or contact to people, but the call above just returns the project itself.
Plugin Author
scribu
(@scribu)
Hm… it shouldn’t even return the current project, because of the 'post__not_in' => array( $post_id ) arg.
Thread Starter
oudein
(@oudein)
I know! That’s particularly confusing.
(By the by, I cleaned up the commentary in the call, so there are some missing closures and such, but it’s basically the same that I am using.)
I have multiple versions of these three running for other connections and they are all fine, but this one is stumping me. I was thinking that perhaps I should try to modify the related posts function, but I am not sure how to instruct it to return the projects associated with the people, instead of simply the people themselves.
Plugin Author
scribu
(@scribu)
With the development version (0.9.6-alpha), you can just do this:
function get_project_associated_people( $post_id ) {
global $projects_to_people_connection;
return $projects_to_people_connection->get_related( $post_id );
}
And if you use connection type ids, even shorter:
function get_project_associated_people( $post_id ) {
return p2p_type( 'projects_to_people' )->get_related( $post_id );
}
Thread Starter
oudein
(@oudein)
scribu, I was just writing when the page refreshed and I saw your response!
I was going to say that I saw the addition of ids to connections types, that I am really impressed with your dedication and alacrity in problem solving with this plugin, and that (even though I was already planning to donate when I get paid from this current project) my donation amount has definitely increased! Thank you so much for all your work on the plugin and the speed with which you help users. I know this sounds a bit ridiculous, but your behavior really could be a model for other WordPress plugin devs.
So. Ids are aweseome and will make creating flexible queries using connections so much easier. I will give the examples you wrote above a shot and let you know how it goes.
Thread Starter
oudein
(@oudein)
Thaks, scribu, it worked perfectly. Now I just have to figure out how to merge separate query results.