NEXT craftinamerica.org. Base setup for headless wordpress https://www.craftinamerica.org
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

related-items.php 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. function grab_ids_related_to_and_from($id_to_remove, $p2p_res) {
  3. $related_to_ids = array_map(function($post) {
  4. return (int)$post->p2p_to;
  5. }, $p2p_res);
  6. $related_from_ids = array_map(function($post) {
  7. return (int)$post->p2p_from;
  8. }, $p2p_res);
  9. $unfiltered = array_merge($related_to_ids, $related_from_ids);
  10. $deduped = array_unique($unfiltered);
  11. return array_diff( $deduped, array($id_to_remove) );
  12. }
  13. function prepare_related_items($post_ids, $include_post) {
  14. // Rearrange what fields get shown
  15. $collection = array();
  16. // Use IDs to get posts from the wpdb
  17. $args = [
  18. 'numberposts' => -1,
  19. 'post_type' => 'any',
  20. 'include' => $post_ids
  21. ];
  22. $related_items = get_posts($args);
  23. forEach( $related_items as $item ) {
  24. if($include_post) {
  25. $collection[$item->ID] = default_post_format($item, false);
  26. } else {
  27. $collection[$item->ID] = minimal_post_format($item);
  28. }
  29. }
  30. return $collection;
  31. }
  32. function p2p_related_to($id, $include_post) {
  33. global $wpdb;
  34. $sql = $wpdb->prepare(
  35. "SELECT * FROM wp_p2p
  36. WHERE p2p_from = %d
  37. OR p2p_to = %d",
  38. $id, $id
  39. );
  40. $res = $wpdb->get_results($sql);
  41. $related_posts_ids = grab_ids_related_to_and_from($id, $res);
  42. $related_posts = prepare_related_items($related_posts_ids, $include_post);
  43. if(empty($related_posts_ids)) {
  44. return [];
  45. } else {
  46. return $related_posts;
  47. }
  48. }
  49. ?>