set_body_params( $fields ); $response = rest_do_request( $request ); if ( $response->is_error() ) { return $response->as_error(); } return self::get( $template->id, $template->type ); } /** * Removes the customizations of a theme template. * * @param WP_Block_Template $template Template. * * @return WP_Block_Template|WP_Error The theme's version of the template. */ public static function reset( WP_Block_Template $template ) { if ( 'custom' !== $template->source || ! $template->has_theme_file ) { return Helpers::error( 'not_customized', __( 'Only theme templates that have been customized can be reset. This template is either not customized or was created by a user and has no theme version.', 'seeb-abilities' ) ); } $request = new WP_REST_Request( 'DELETE', self::route( $template ) ); $request->set_param( 'force', true ); $response = rest_do_request( $request ); if ( $response->is_error() ) { return $response->as_error(); } return self::get( $template->id, $template->type ); } /** * Formats a template. * * @param WP_Block_Template $template Template. * @param bool $with_content Whether to include the content. * * @return array */ public static function format( WP_Block_Template $template, bool $with_content = false ): array { $data = [ 'id' => $template->id, 'wp_id' => (int) $template->wp_id, 'type' => $template->type, 'slug' => $template->slug, 'title' => '' !== (string) $template->title ? (string) $template->title : $template->slug, 'description' => (string) $template->description, 'source' => (string) $template->source, 'has_theme_file' => (bool) $template->has_theme_file, 'is_custom' => (bool) $template->is_custom, 'customized' => 'custom' === $template->source && $template->has_theme_file, ]; if ( 'wp_template_part' === $template->type ) { $data['area'] = (string) $template->area; } if ( $with_content ) { $data['content'] = (string) $template->content; } return $data; } /** * REST route of a template. * * @param WP_Block_Template $template Template. * * @return string */ private static function route( WP_Block_Template $template ): string { return '/wp/v2/' . ( 'wp_template_part' === $template->type ? 'template-parts' : 'templates' ) . '/' . $template->id; } }