我已将此功能添加到functions.php(在我的wordpress主题中):
function parse_yturl($url) {
$pattern = '#^(?:https?://)?(?:www\.)?(?:youtu\.be/|youtube\.com(?:/embed/|/v/|/watch\?v=|/watch\?.+&v=))([\w-]{11})(?:.+)?$#x';
preg_match($pattern, $url, $matches);
return (isset($matches[1])) ? $matches[1] : false;
}
如果我在一个单独的文件中运行相同的功能,它工作正常并给我我试过的任何youtube链接的ID,但是,当我尝试在页面模板中使用它时(见下文),我不喜欢什么都没有。
哦是的,我也尝试过回应$视频编码,这很好用。另外 - 如果我在上面提到的单独文件中使用相同的youtubelink,函数/正则表达式就可以正常工作。
以下是模板中的代码:
<?php query_posts( array(
'post_type' => 'page',
'meta_key' => 'ecpt_forsidevideo',
'meta_value' => '',
'meta_compare' => '!=' ) );
if ( have_posts() ) while ( have_posts() ) : the_post();
$videocode = get_post_meta($post->ID, 'ecpt_videocode', true);
$videoid = parse_yturl($videocode);
?>
<div class="forsidevideo">
<div class="videothumbnail"><?php echo parse_yturl($videocode); ?>
<a href="http://www.youtube.com/watch?v=<?php echo $videoid;?>" rel="prettyPhoto" title="<?php the_title(); ?>"><img src="http://img.youtube.com/vi/<?php echo $videoid;?>/0.jpg" alt="YouTube" width="200" height="150" /></a>
<a class="playbutton" href="http://www.youtube.com/watch?v=<?php echo $videoid;?>" rel="prettyPhoto" title="<?php the_title(); ?>"><img src="<?php bloginfo('stylesheet_directory');?>/images/playbutton.png" alt="Vis video" width="40" height="40" /></a>
</div>
<a href="<?php the_permalink();?>"><h3 class="entry-title"><?php the_title(); ?></h3></a>
<?php the_excerpt(); ?>
</div>
<?php endwhile; // end of the loop. ?>
谁能告诉我我做错了什么?