PluginProbe
Friends / 4.3.2
Friends v4.3.2
4.3.2 4.3.1 4.3.0 4.2.2 4.2.1 4.2.0 4.1.0 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.0 2.9.1 All 88 releases
← All changes | includes/class-rest.php +39 -0 4.2.24.3.2 View file →
@@ -105,8 +105,26 @@
105 105 );
106 106
107 107 register_rest_route(
108 108 self::PREFIX,
109 + 'link-preview',
110 + array(
111 + 'methods' => 'POST',
112 + 'callback' => array( $this, 'rest_link_preview' ),
113 + 'permission_callback' => function () {
114 + return current_user_can( Friends::REQUIRED_ROLE );
115 + },
116 + 'args' => array(
117 + 'id' => array(
118 + 'type' => 'integer',
119 + 'required' => true,
120 + ),
121 + ),
122 + )
123 + );
124 +
125 + register_rest_route(
126 + self::PREFIX,
109 127 'extension',
110 128 array(
111 129 'methods' => array( 'GET', 'POST' ),
112 130 'callback' => array( $this, 'rest_extension' ),
@@ -287,8 +305,29 @@
287 305 return array(
288 306 'new_posts' => count( $new_posts ),
289 307 'url' => $feed->get_url(),
290 308 'was_polled' => $was_polled,
309 + );
310 + }
311 +
312 + /**
313 + * Fetch a link preview on demand.
314 + *
315 + * @param \WP_REST_Request $request The REST request.
316 + * @return array|\WP_Error
317 + */
318 + public function rest_link_preview( $request ) {
319 + $post_id = intval( $request->get_param( 'id' ) );
320 + $post = get_post( $post_id );
321 +
322 + if ( ! $post || ! in_array( $post->post_type, apply_filters( 'friends_frontend_post_types', array() ), true ) ) {
323 + return new \WP_Error( 'friends_link_preview_invalid_post', __( 'The requested post is not available.', 'friends' ), array( 'status' => 404 ) );
324 + }
325 +
326 + $preview = Link_Preview::update_link_preview( $post_id );
327 +
328 + return array(
329 + 'preview' => $preview ? $preview : false,
291 330 );
292 331 }
293 332
294 333 public function rest_extension( $request ) {