| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- <?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($post_ids, $include_post) {
- // Rearrange what fields get shown
- $collection = array();
-
- // Use IDs to get posts from the wpdb
- $args = [
- 'numberposts' => -1,
- 'post_type' => 'any',
- 'include' => $post_ids
- ];
-
- $related_items = get_posts($args);
- forEach( $related_items as $item ) {
- if($include_post) {
- $collection[$item->ID] = default_post_format($item, false);
- } else {
- $collection[$item->ID] = minimal_post_format($item);
- }
- }
- return $collection;
- }
-
- function p2p_related_to($id, $include_post) {
- global $wpdb;
- $sql = $wpdb->prepare(
- "SELECT * FROM wp_p2p
- WHERE p2p_from = %d
- OR p2p_to = %d",
- $id, $id
- );
- $res = $wpdb->get_results($sql);
-
- $related_posts_ids = grab_ids_related_to_and_from($id, $res);
-
- $related_posts = prepare_related_items($related_posts_ids, $include_post);
-
- if(empty($related_posts_ids)) {
- return [];
- } else {
- return $related_posts;
- }
- }
-
- ?>
|