在Wordpress帖子中捕获Youtube视频并插入自定义字段值

时间:2014-08-08 14:03:13

标签: php wordpress video youtube

任何人都可以帮助我,我需要扫描帖子以获取YouTube视频。如果帖子包含视频(www.youtube.com/embed/youtubepostid),那么我想将该网址复制到一个自定义字段,其中包含“iFrame”键。

我正在寻找一个答案,每当我尝试这样做时,我都会想起WSD :(

指向正确方向的任何指针?

2 个答案:

答案 0 :(得分:1)

我编写了一些解决我们常见问题的东西;) 如果您要显示格式化的嵌入视频,我也会添加一些内容(在帖子内容之外)。

我 - 将这些功能添加到'functions.php'文件

1-从内容中删除嵌入的youtube

function remove_video( $content ) {
    $postOutput = preg_replace('/<iframe[^>]+./','', $content);
    return $postOutput;
}
add_filter( 'the_content', 'remove_video', 100 );

2 - 抓住并返回内容中嵌入的youtube

function catch_first_youtube_video() {
    global $post, $posts;
    // Catch youtube iframe src
    preg_match_all('/(http|https).*(yout).*/i', $post->post_content, $matches);
    $youtubeUrl = $matches[0][0];

    // Set the new meta for your post.
    add_post_meta($post->ID, 'iFrame',  $youtubeUrl)  

    // Remove http: or https:
    $formated = preg_replace('/(http:|https:|watch\\?v=)/i','', $youtubeUrl);

    // Formated string '//youtube.com/embed/XXXXXXX'
    $formated =str_replace('youtube.com/','youtube.com/embed/', $formated );

    return '<iframe src="'.$formated .'"></iframe>';
}

II - 在帖子模板内容中调用这些功能

1 - 在没有嵌入视频的帖子模板中显示帖子的内容

remove_filter(the_content(),'remove_video', 100 );

2 - 无论您想要什么,都要显示嵌入视频iframe!

<?= catch_first_youtube_video(); ?>

瞧!请享用 ! (抱歉我的英语不好)

答案 1 :(得分:1)

我尝试实施,但获得一个警告和一个通知。

    第{li>

    add_post_meta($post->ID, 'iFrame', $youtubeUrl);需要一个;关闭有了这个我修正警告。

  1. 注意: $youtubeUrl = $matches[0][0];中未定义的偏移量:0,我不知道如何修复它:(

  2. Thanx寻求帮助。