I have a custom meta box set up that allows users to paste the Youtube URL of a video so that it can be embedded into a post/page.
The meta box can be repeated so that a user can add as few or as many URL’s as they wish so I’m using this code snippet to display each as a list item;
<?php
$video = get_post_meta($post->ID, 'youtube-url');
foreach ($video as $vid) {
echo '<li>'.$vid.'</li>';
}
?>
Is there a way that I can run the_content
filter on each individual list item so that I can make use of oEmbed that is shipped with WordPress?
Or perhaps there’s a more efficient way…
1
All you need to do use apply_filters
.
foreach ($video as $vid) {
echo '<li>'.apply_filters('the_content',$vid).'</li>';
}
It may be more efficient to concatenate a string and then run the filter on the whole thing.
$lis="";
foreach ($video as $vid) {
$lis .= '<li>'.$vid.'</li>';
}
echo apply_filters('the_content',$lis);
I haven’t benchmarked the one versus the other but given that the latter calls the filter once and the former many times, I’d bet on the latter.