Inline SVG’s in WordPress

function ventures_get_svg( $path = '' ) {
	if ( empty( $path ) ) {
		return;
	}

	$path_info = pathinfo( $path );

	if ( 'svg' !== $path_info['extension'] ) {
		return;
	}

	$svg = file_get_contents( $path, true );

	if ( empty( $svg ) ) {
		return;
	}

	// Remove XML
	$xml = new DOMDocument();
	$xml->loadXML( $svg );

	return $xml->saveXML( $xml->documentElement ); // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
}

function ventures_the_svg( $path = '' ) {
	if ( empty( $path ) ) {
		return;
	}

	echo wp_kses( ventures_get_svg( $path ), ventures_get_kses_svg_ruleset() );
}

Ruleset

function ventures_get_kses_svg_ruleset() {
	$kses_defaults = wp_kses_allowed_html( 'post' );

	$svg_args = [
		'svg'  => [
			'class'           => true,
			'aria-hidden'     => true,
			'aria-labelledby' => true,
			'role'            => true,
			'xmlns'           => true,
			'width'           => true,
			'height'          => true,
			'viewbox'         => true,
		],
		'g'    => [
			'fill' => true,
		],
		'path' => [
			'd'    => true,
			'fill' => true,
		],
	];

	return array_merge( $kses_defaults, $svg_args );
}