web-dev-qa-db-ja.com

The_contentフィルタを複数の値を持つカスタムフィールドに適用する

ユーザーが動画のYoutube URLを貼り付けて投稿/ページに埋め込めるようにするカスタムメタボックスを設定しました。

ユーザーが望むだけの数のURLを追加できるようにメタボックスを繰り返すことができるので、このコードスニペットを使用してそれぞれをリストアイテムとして表示します。

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

Wordpressに同梱されているoEmbedを利用できるように、個々のリスト項目に対してthe_contentフィルタを実行する方法はありますか?

それとももっと効率的な方法があるのでしょうか...

5
Poisontonomes

あなたがする必要があるのは apply_filters を使うことです。

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

may は、文字列を連結してからフィルタ全体を実行するほうが効率的です。

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

私は一方をもう一方に対してベンチマークしていませんが、後者がフィルターを1回呼び出し、前者が何度も呼び出すので、私は後者に賭けます。

9
s_ha_dum