y_utils->put_array_value( $response, $this->transform_content( $value, $link ), $keys ); return $response; } private function get_rest_content_fields() { $fields = apply_filters( 'wp_smush_rest_content_fields', array( 'excerpt', 'content' ) ); return array_unique( $fields ); } private function is_array_post_like( $array ) { return is_array( $array ) && isset( $array['id'] ) && isset( $array['title'] ) && isset( $array['slug'] ); } private function transform_rest_media_response( $response ) { $sizes = $this->array_utils->get_array_value( $response, array( 'media_details', 'sizes' ) ); if ( ! empty( $sizes ) ) { foreach ( $sizes as $size_key => $size ) { if ( ! empty( $size['source_url'] ) ) { $response['media_details']['sizes'][ $size_key ]['source_url'] = $this->transform_url( $size['source_url'] ); } } } if ( ! empty( $response['source_url'] ) ) { $response['source_url'] = $this->transform_url( $response['source_url'] ); } return $this->transform_rest_content_field( 'description', $response ); } public function transform_url( $url ) { foreach ( $this->get_transforms() as $transform ) { $url = $transform->transform_image_url( $url ); } return $url; } /** * @return Transform[] */ public function get_transforms() { if ( is_null( $this->transforms ) ) { $this->transforms = $this->prepare_transforms(); } return $this->transforms; } private function prepare_transforms() { $transforms = $this->array_utils->ensure_array( apply_filters( 'wp_smush_content_transforms', array() ) ); $filtered = array(); foreach ( $transforms as $key => $transform ) { if ( is_a( $transform, '\Smush\Core\Transform\Transform' ) && $transform->should_transform() ) { $filtered[ $key ] = $transform; } } return $filtered; } /** * @param Page $parsed_page * * @return void */ public function do_pre_transform_action( $parsed_page ) { do_action( 'wp_smush_pre_transform_page', $parsed_page ); } /** * @param Page $parsed_page * * @return void */ public function do_post_transform_action( $parsed_page ) { do_action( 'wp_smush_post_transform_page', $parsed_page ); } }