事实上,这很容易–当您知道缺少什么时:全球$wp_embed
对象,因此它知道要引用什么。原因很简单:oEmbed被缓存为post元数据,因此在不知道ID的情况下,标记无法在内容中获取和替换。
// grab a post from the database
/** @var \\WP_Embed $wp_embed */
global $wp_embed;
/** @var \\WP_Post $post; */
// Add the fetched posts ID and add it to the global object
$wp_embed->post_ID = $post->ID;
// Execute the [embed] shortcode
$wp_embed->run_shortcode( $post->post_content );
// Execute the oEmbed handlers for plain links on the own line
$wp_embed->autoembed( $post->post_content );
就是这样。
更多in depth 有关oEmbed和缓存的信息可以在@birgire的相关答案中找到