Apply the_content filter to a custom field with multiple values

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;

Read More
<?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…

Related posts

1 comment

  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.

Comments are closed.