WordPressには oEmbed機能 があることを私は知っています。しかし、埋め込むコンテンツは、次のように独自の行に配置する必要があります。
Lorem Ipsum
http://www.youtube.com/link/to/content
More Lorem Ipsum
残念ながら、私のマークアップはこのように見えますのでoEmbedは機能せず、私はプラグインを使わなければなりません。
<ul>
<li>http://www.youtube.com/link/to/content</li>
<li>http://www.youtube.com/link/to/content</li>
</ul>
私はこのプラグインがなくても動作するようになることができるとにかくありますか? functions.phpの一行か二行はこのプラグインより良いでしょう。
商品の周りに[embed]
のショートコードを使うだけです。
<ul>
<li>[embed]http://www.youtube.com/link/to/content[/embed]</li>
...
WP_Embed
クラスによる特別なフィルタリングが少しあります。これは、スタンドアロンリンクを埋め込みのターゲットにします。
/**
* 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 );
}
私たちがその論理を取り、あなたのユースケースのために正規表現を調整するならば:
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 );
}