web-dev-qa-db-ja.com

投稿コンテンツでoEmbedsを使用する方法 AJAX リクエスト

投稿を返すAJAXリクエストがあります。 post_contentには、Twitter、YouTube、TED、およびデフォルトのVanilla WordPressインストールでoEmbedプロバイダとして登録されているその他のプラットフォームへのリンクがあります。現時点では、WordPressのoEmbedハンドラはそれらを登録せず、単純なリンクを表示し、それ以外は何も表示しません。

OEmbedをサポートしているAJAXを介してコンテンツを取得する方法を教えてください。

1
kaiser

実際、これは非常に簡単でした - 足りないものがわかっているとき:グローバル$wp_embedオブジェクトの現在の投稿ID。理由は単純です。oEmbedsは投稿メタデータとしてキャッシュされるので、IDを知らないとMarkUpを取得してコンテンツ内で置き換えることはできません。

// 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 );

それでおしまい。

oEmbedとキャッシングに関するさらに詳しい情報の情報は、@ birgireの関連回答にあります。

6
kaiser