PluginProbe
Parse.ly / 3.24.2
Parse.ly v3.24.2
3.24.3 3.24.2 3.24.1 3.24.0 3.23.7 3.23.6 3.23.5 3.23.4 3.23.3 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.17.0 3.18.0 3.18.1 3.19.0 3.19.1 3.19.2 3.19.3 3.2.0 3.2.1 3.20.0 3.20.1 All 107 releases
← All changes | src/Endpoints/class-rest-metadata.php +48 -35 3.2.1 → 3.24.2 View file →
@@ -1,10 +1,10 @@
1 1 <?php
2 2 /**
3 - * REST API class
3 + * Endpoints: REST Metadata endpoint class
4 4 *
5 5 * @package Parsely
6 - * @since 3.1.0
6 + * @since 3.1.0
7 7 */
8 8
9 9 declare(strict_types=1);
10 10
@@ -9,35 +9,27 @@
9 9 declare(strict_types=1);
10 10
11 11 namespace Parsely\Endpoints;
12 12
13 +use Parsely\Metadata;
13 14 use WP_Post;
14 15
15 16 /**
16 - * Injects Parse.ly Metadata to WordPress REST API
17 + * Injects Parse.ly Metadata to WordPress REST API.
17 18 *
18 19 * @since 3.1.0
19 20 * @since 3.2.0 Renamed FQCN from `Parsely\Rest` to `Parsely\Endpoints\Rest_Metadata`.
20 21 */
21 22 class Rest_Metadata extends Metadata_Endpoint {
22 - private const REST_VERSION = '1.0.0';
23 + private const REST_VERSION = '1.1.0';
23 24
24 25 /**
25 - * Register fields in WordPress REST API
26 + * Registers fields in WordPress REST API.
26 27 *
27 28 * @since 3.1.0
28 - *
29 - * @return void
30 29 */
31 30 public function run(): void {
32 - /**
33 - * Filter whether REST API support is enabled or not.
34 - *
35 - * @since 3.1.0
36 - *
37 - * @param bool $enabled True if enabled, false if not.
38 - */
39 - if ( apply_filters( 'wp_parsely_enable_rest_api_support', true ) && $this->parsely->api_key_is_set() ) {
31 + if ( apply_filters( 'wp_parsely_enable_rest_api_support', true ) && $this->parsely->site_id_is_set() ) {
40 32 $this->register_meta();
41 33 }
42 34 }
43 35
@@ -44,14 +36,11 @@
44 36 /**
45 37 * Registers the meta field on the appropriate resource types in the REST API.
46 38 *
47 39 * @since 3.1.0
48 - *
49 - * @return void
50 40 */
51 41 public function register_meta(): void {
52 - $options = $this->parsely->get_options();
53 - $object_types = array_unique( array_merge( $options['track_post_types'], $options['track_page_types'] ) );
42 + $object_types = $this->parsely->get_all_track_types();
54 43
55 44 /**
56 45 * Filters the list of object types that the Parse.ly REST API is hooked into.
57 46 *
@@ -56,9 +45,10 @@
56 45 * Filters the list of object types that the Parse.ly REST API is hooked into.
57 46 *
58 47 * @since 3.1.0
59 48 *
60 - * @param string[] $object_types Array of strings containing the object types, i.e. `page`, `post`, `term`.
49 + * @param string[] $object_types Array of strings containing the object types, i.e. `page`,
50 + * `post`, `term`.
61 51 */
62 52 $object_types = apply_filters( 'wp_parsely_rest_object_types', $object_types );
63 53
64 54 $args = array( 'get_callback' => array( $this, 'get_callback' ) );
@@ -65,40 +55,63 @@
65 55 register_rest_field( $object_types, self::FIELD_NAME, $args );
66 56 }
67 57
68 58 /**
69 - * Function to get hooked into the `get_callback` property of the `parsely` REST API field. It generates
70 - * the `parsely` object in the REST API.
59 + * Function to get hooked into the `get_callback` property of the `parsely`
60 + * REST API field. It generates the `parsely` object in the REST API.
71 61 *
72 - * @param array $object The WordPress object to extract to render the metadata for, usually a post or a page.
73 - * @return array<string, mixed> The `parsely` object to be rendered in the REST API. Contains a version number describing the
74 - * response and the `meta` object containing the actual metadata.
62 + * @since 3.1.0
63 + * @since 3.19.0 Added the `canonical_url` field.
64 + * @since 3.24.2 Removed the `smart_links` and `traffic_boost_suggestions_count` fields.
65 + *
66 + * @param array<string, mixed> $object_data The data of the object to render the metadata for,
67 + * usually a post or a page.
68 + * @return array<string, mixed> The `parsely` object to be rendered in the REST API. Contains a
69 + * version number describing the response and the `meta` object
70 + * containing the actual metadata.
75 71 */
76 - public function get_callback( array $object ): array {
77 - $post_id = $object['ID'] ?? $object['id'] ?? 0;
72 + public function get_callback( array $object_data ): array {
73 + /** @var int $post_id */
74 + $post_id = $object_data['ID'] ?? $object_data['id'] ?? 0;
78 75 $post = WP_Post::get_instance( $post_id );
76 +
79 77 $options = $this->parsely->get_options();
80 78
79 + $response = array(
80 + 'version' => self::REST_VERSION,
81 + 'canonical_url' => \Parsely\Parsely::get_canonical_url_from_post( $post_id ),
82 + );
83 +
81 84 if ( false === $post ) {
82 - $meta = '';
83 - } else {
84 - $meta = $this->parsely->construct_parsely_metadata( $options, $post );
85 + return $response;
85 86 }
86 87
87 - $response = array(
88 - 'version' => self::REST_VERSION,
89 - 'meta' => $meta,
90 - );
88 + $metadata = ( new Metadata( $this->parsely ) )->construct_metadata( $post );
89 + $response['meta'] = $metadata;
91 90
92 91 /**
93 - * Filter whether REST API support in rendered string format is enabled or not.
92 + * Filter whether REST API support in rendered string format is enabled
93 + * or not.
94 94 *
95 95 * @since 3.1.0
96 96 *
97 97 * @param bool $enabled True if enabled, false if not.
98 + * @param WP_Post|false $post Current post object.
98 99 */
99 100 if ( apply_filters( 'wp_parsely_enable_rest_rendered_support', true, $post ) ) {
100 101 $response['rendered'] = $this->get_rendered_meta( $options['meta_type'] );
102 + }
103 +
104 + /**
105 + * Filter whether the REST API returns the tracker URL.
106 + *
107 + * @since 3.3.0
108 + *
109 + * @param bool $enabled True if enabled, false if not.
110 + * @param WP_Post|false $post Current post object.
111 + */
112 + if ( apply_filters( 'wp_parsely_enable_tracker_url', true, $post ) ) {
113 + $response['tracker_url'] = $this->parsely->get_tracker_url();
101 114 }
102 115
103 116 return $response;
104 117 }