| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- <?php
-
- include(formats.php);
-
- function grab_ids_related_to_and_from($id_to_remove, $p2p_res) {
- $related_to_ids = array_map(function($post) {
- return (int)$post->p2p_to;
- }, $p2p_res);
- $related_from_ids = array_map(function($post) {
- return (int)$post->p2p_from;
- }, $p2p_res);
-
- $unfiltered = array_merge($related_to_ids, $related_from_ids);
- $deduped = array_unique($unfiltered);
-
- return array_diff( $deduped, array($id_to_remove) );
- }
-
- function prepare_related_items($args) {
- // Rearrange what fields get shown
- $collection = array();
- forEach( get_posts($args) as $item ) {
- $collection[$item->ID] = default_post_format($item, true);
- }
- return $collection;
- }
-
- function p2p_related_to($id, $type) {
- global $wpdb;
- $to_type = '%_to_' . $type;
- $from_type = $type . '_to_%';
-
- $res = $wpdb->get_results($wpdb->prepare(
- "SELECT * FROM wp_p2p
- WHERE p2p_from = %d
- OR p2p_to = %d",
- $id, $id
- ));
-
- $related_posts_ids = grab_ids_related_to_and_from($id, $res);
-
- // Use IDs to get posts from the wpdb
- $args = array(
- 'numberposts' => -1,
- 'post_type' => 'any',
- 'include' => $related_posts_ids
- );
- wp_reset_postdata();
-
- return prepare_related_items($args);
- }
-
- ?>
|