<?php /* Plugin name: REST API Modifications Description: Make changes to REST API responses Version: 1.0 Author: Erick Hitter Author URI: https://ethitter.com/ License: GPLv2 */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ class ETH_REST_API_Mods { /** * */ public static function register_hooks() { add_filter( 'rest_prepare_post', array( __CLASS__, 'add_medium_image' ), 10, 3 ); add_filter( 'sharing_show', array( __CLASS__, 'disable_sharedaddy' ) ); } /** * Add a reference to a post's medium-sized image, when present * * Avoids needing to query API separately for an image */ public static function add_medium_image( $data, $post, $context ) { // Default to no image $image_url = false; // Find an image, either from featured or attachments if ( has_post_thumbnail( $post ) ) { $image_url = wp_get_attachment_image_url( get_post_thumbnail_id( $post ), 'medium' ); } else { $children = get_children( array( 'post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'order' => 'ASC', 'orderby' => 'menu_order ID', 'posts_per_page' => 15, ) ); foreach ( $children as $child ) { if ( wp_attachment_is_image( $child->ID ) ) { $image_url = wp_get_attachment_image_url( $child->ID, 'medium' ); break; } } } // Return modified data object $data->data['medium_image'] = $image_url; return $data; } /** * Don't include Jetpack's sharing stuff in REST responses */ public static function disable_sharedaddy( $show ) { if ( defined( 'REST_REQUEST' ) && REST_REQUEST ) { $show = false; // add_filter( 'jetpack_sharing_display_markup', '__return_empty_string' ); } return $show; } } ETH_REST_API_Mods::register_hooks();