add_action('rest_api_init', function () { register_rest_route('gg/v1', '/related/', [ 'methods' => 'GET', 'callback' => 'gg_get_related_arrests', 'args' => [ 'post_id' => ['required' => true], 'category_id' => ['required' => true], 'arrest_date' => ['required' => true], 'page' => ['default' => 1], ], 'permission_callback' => '__return_true', ]); }); function gg_get_related_arrests($data) { $args = [ 'post_type' => 'post', 'posts_per_page' => 4, 'paged' => $data['page'], 'post__not_in' => [$data['post_id']], 'cat' => $data['category_id'], 'meta_query' => [ [ 'key' => 'arrest_date', 'value' => $data['arrest_date'], 'compare' => '=' ] ] ]; $query = new WP_Query($args); $results = []; foreach ($query->posts as $post) { setup_postdata($post); $thumbnail = get_the_post_thumbnail_url($post->ID, 'medium'); $results[] = [ 'title' => get_the_title($post), 'link' => get_permalink($post), 'image' => $thumbnail ]; } wp_reset_postdata(); return $results; }