-
Notifications
You must be signed in to change notification settings - Fork 4
/
yarpp-wpgraphql.php
43 lines (39 loc) · 1.43 KB
/
yarpp-wpgraphql.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
/**
* Plugin Name: YARPP WPGraphQL
* Plugin URI: https://github.com/matepaiva/yarpp-wpgraphql
* Version: 0.0.1
* Author: Matheus Paiva
* Author URI: https://github.com/matepaiva/
* Description: Creates a relatedPosts field in Post type with wp-graphql. You must have installed wp-graphql and YARPP.
* License: GPLv2 or later
*/
add_action('graphql_register_types', function () {
global $yarpp;
if ($yarpp) {
\register_graphql_connection([
'fromType' => 'Post',
'fromFieldName' => 'relatedPosts',
'toType' => 'Post',
'connectionTypeName' => 'RelatedPostsConnection',
'connectionArgs' => [
'limit' => [
'name' => 'limit',
'type' => 'Int',
'description' => 'Override\'s YARPP setting\'s "Maximum number of related posts." The maximum number is 20.'
]
],
'resolve' => function ($post, $args, $context, $info) {
global $yarpp;
$limit = isset($args['where']['limit']) ? $args['where']['limit'] : null;
$related_posts = $yarpp->get_related($post->ID, $limit ? ['limit' => $limit] : null);
$args['where']['in'] = array_map(function ($related_post) {
return $related_post->ID;
}, $related_posts);
$resolver = new \WPGraphQL\Data\Connection\PostObjectConnectionResolver(null, $args, $context, $info, 'post');
$result = $resolver->get_connection();
return $result;
}
]);
}
});