web-dev-qa-db-fra.com

Appliquer le filtre the_content à un champ personnalisé avec plusieurs valeurs

J'ai une méta-boîte personnalisée qui permet aux utilisateurs de coller l'URL Youtube d'une vidéo afin qu'elle puisse être intégrée dans un message/une page.

La méta-boîte peut être répétée de sorte qu'un utilisateur puisse ajouter autant d'URL qu'il le souhaite et j'utilise donc cet extrait de code pour les afficher toutes sous la forme d'un élément de liste;

<?php
    $video = get_post_meta($post->ID, 'youtube-url');
    foreach ($video as $vid) {
        echo '<li>'.$vid.'</li>';
    }
?>

Existe-t-il un moyen d'exécuter le filtre the_content sur chaque élément de la liste afin de pouvoir utiliser oEmbed fourni avec Wordpress?

Ou peut-être qu'il y a un moyen plus efficace ...

5
Poisontonomes

Tout ce que vous devez faire utilise apply_filters .

foreach ($video as $vid) {
    echo '<li>'.apply_filters('the_content',$vid).'</li>';
}

Il peut être plus efficace pour concaténer une chaîne puis exécuter le filtre sur l’ensemble.

$lis = '';
foreach ($video as $vid) {
    $lis .= '<li>'.$vid.'</li>';
}
echo apply_filters('the_content',$lis);

Je n'ai pas comparé l'un par rapport à l'autre, mais étant donné que ce dernier appelle le filtre une fois et le premier plusieurs fois, je parierais sur le dernier.

9
s_ha_dum