Je suis conscient que WordPress a la fonctionnalité oEmbed . Mais le contenu à intégrer doit être sur sa propre ligne, comme ceci:
Lorem Ipsum
http://www.youtube.com/link/to/content
More Lorem Ipsum
Malheureusement, mon balisage ressemble à ceci, donc oEmbed ne fonctionne pas et je dois utiliser un plugin.
<ul>
<li>http://www.youtube.com/link/to/content</li>
<li>http://www.youtube.com/link/to/content</li>
</ul>
Y a-t-il un moyen de faire fonctionner oEmbed sans ce plugin? Une ligne ou deux dans functions.php serait mieux que ce plugin.
Utilisez simplement le shortcode [embed]
autour de vos éléments.
<ul>
<li>[embed]http://www.youtube.com/link/to/content[/embed]</li>
...
Il existe un peu de filtrage spécial par la classe WP_Embed
qui transforme les liens autonomes en cible pour l'intégration:
/**
* Passes any unlinked URLs that are on their own line to {@link WP_Embed::shortcode()} for potential embedding.
*
* @uses WP_Embed::autoembed_callback()
*
* @param string $content The content to be searched.
* @return string Potentially modified $content.
*/
function autoembed( $content ) {
return preg_replace_callback( '|^\s*(https?://[^\s"]+)\s*$|im', array( $this, 'autoembed_callback' ), $content );
}
Si nous prenons cette logique et ajustons regex pour votre cas d'utilisation:
add_filter( 'the_content', 'autoembed_list_items', 8 );
function autoembed_list_items( $content ) {
global $wp_embed;
return preg_replace_callback( '|<li>(https?://[^\s"]+)</li>|im', array( $wp_embed, 'autoembed_callback' ), $content );
}