Explorar el Código

:bug: return related posts only | stop returning everything

tags/0.9.0
j hace 5 años
padre
commit
850b4ba44b
Se han modificado 1 ficheros con 25 adiciones y 18 borrados
  1. 25
    18
      plugins/cia-endpoints/includes/related-items.php

+ 25
- 18
plugins/cia-endpoints/includes/related-items.php Ver fichero

@@ -12,42 +12,49 @@ function grab_ids_related_to_and_from($id_to_remove, $p2p_res) {
12 12
 
13 13
     $unfiltered = array_merge($related_to_ids, $related_from_ids);
14 14
     $deduped = array_unique($unfiltered);
15
-
15
+    
16 16
     return array_diff( $deduped, array($id_to_remove) );
17 17
 }
18 18
 
19
-function prepare_related_items($args) {
19
+function prepare_related_items($post_ids) {
20 20
     // Rearrange what fields get shown
21 21
     $collection = array();
22
-    forEach( get_posts($args) as $item ) {
23
-        $collection[$item->ID] = default_post_format($item, true);
22
+
23
+    // Use IDs to get posts from the wpdb
24
+    $args = array(
25
+        'numberposts' => -1,
26
+        'post_type' => 'any',
27
+        'include' => $post_ids
28
+    );
29
+    $related_items = get_posts($args);
30
+    forEach( $related_items as $item ) {
31
+        $collection[$item->ID] = $item;
24 32
     }
25 33
     return $collection;
26 34
 }
27 35
 
28 36
 function p2p_related_to($id, $type) {
29 37
     global $wpdb;
30
-    $to_type = '%_to_' . $type;
31
-    $from_type = $type . '_to_%';
32
-
33
-    $res = $wpdb->get_results($wpdb->prepare(
38
+    $sql = $wpdb->prepare(
34 39
         "SELECT * FROM wp_p2p
35 40
         WHERE p2p_from = %d
36 41
         OR p2p_to = %d",
37 42
         $id, $id
38
-    ));
39
-
43
+    );
44
+    $res = $wpdb->get_results($sql);
45
+    
40 46
     $related_posts_ids = grab_ids_related_to_and_from($id, $res);
41 47
 
42
-    // Use IDs to get posts from the wpdb
43
-    $args = array(
44
-        'numberposts' => -1,
45
-        'post_type' => 'any',
46
-        'include' => $related_posts_ids
47
-    );
48
-    wp_reset_postdata();
48
+    
49
+    // wp_reset_postdata();
49 50
 
50
-    return prepare_related_items($args);
51
+    $related_posts = prepare_related_items($related_posts_ids);
52
+    
53
+    if(empty($related_posts_ids)) {
54
+        return [];
55
+    } else {
56
+        return $related_posts;
57
+    }
51 58
 }
52 59
 
53 60
 ?>

Loading…
Cancelar
Guardar