原型

wp_ajax_parse_media_shortcode()

源文件

路径:wp-admin/includes/ajax-actions.php

<?php
...
function wp_ajax_parse_media_shortcode() {
	global $post, $wp_scripts;
	if ( empty( $_POST['shortcode'] ) ) {
		wp_send_json_error();
	}
	$shortcode = wp_unslash( $_POST['shortcode'] );
	if ( ! empty( $_POST['post_ID'] ) ) {
		$post = get_post( (int) $_POST['post_ID'] );
	}
	// the embed shortcode requires a post
	if ( ! $post || ! current_user_can( 'edit_post', $post->ID ) ) {
		if ( 'embed' === $shortcode ) {
			wp_send_json_error();
		}
	} else {
		setup_postdata( $post );
	}
	$parsed = do_shortcode( $shortcode  );
	if ( empty( $parsed ) ) {
		wp_send_json_error( array(
			'type' => 'no-items',
			'message' => __( 'No items found.' ),
		) );
	}
	$head = '';
	$styles = wpview_media_sandbox_styles();
	foreach ( $styles as $style ) {
		$head .= '<link type="text/css" rel="stylesheet" href="' . $style . '">';
	}
	if ( ! empty( $wp_scripts ) ) {
		$wp_scripts->done = array();
	}
	ob_start();
	echo $parsed;
	if ( 'playlist' === $_REQUEST['type'] ) {
		wp_underscore_playlist_templates();
		wp_print_scripts( 'wp-playlist' );
	} else {
		wp_print_scripts( array( 'mediaelement-vimeo', 'wp-mediaelement' ) );
	}
	wp_send_json_success( array(
		'head' => $head,
		'body' => ob_get_clean()
	) );
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/wp_ajax_parse_media_shortcode/