web-dev-qa-db-fra.com

Comment utiliser oEmbeds dans le contenu du post pendant AJAX demandes

J'ai une demande AJAX qui renvoie un message. Le post_content contient des liens vers Twitter, YouTube, TED et d'autres plates-formes enregistrées en tant que fournisseurs oEmbed dans une installation par défaut de Vanilla WordPress. À ce jour, le gestionnaire oEmbed de WordPress ne les enregistre pas et affiche les liens simples et rien d'autre.

Comment puis-je récupérer du contenu via AJAX avec le support oEmbed?

1
kaiser

En fait, c’était assez facile, quand vous savez ce qui manque: L’identifiant de publication actuel de l’objet global $wp_embed, afin qu’il sache à quoi se référer. La raison en est simple: les oEmbeds sont mis en cache sous forme de métadonnées post. Par conséquent, sans connaître l'ID, MarkUp ne peut pas être récupéré et remplacé dans le contenu.

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

C'est tout.

Plus d'informations approfondies sur oEmbed et la mise en cache peuvent être trouvées dans une réponse associée de @birgire.

6
kaiser