嗨:D我需要在主页上显示youtube上的缩略图,我有一个wordpress函数和循环的代码,但不能从youtube上显示缩略图。代码可能有什么问题?
功能代码:
function get_thumbnail_fromyoutube( $size = 0 ) {
global $post, $posts;
$youtube = \'\';
$get_url = preg_match_all(\'/<iframe.+src=[\\\'"]([^\\\'"]+)[\\\'"].*>/i\', $post->post_content, $matches);
$youtube = $matches[1][0];
if(preg_match(\'/^(http:\\/\\/www.youtube.com)/\', $youtube))
{
$youtube = preg_replace(\'/(.*?).embed\\//\', \'\', $youtube);
$youtube = preg_replace(\'/\\?.(.*?)$/\', \'\', $youtube);
echo \'<img src="http://img.youtube.com/vi/\' . $youtube . \'/\' . $size . \'.jpg" alt="\' . $post->post_title . \'" />\';
}
}
循环代码:
<?php
$args = array(
\'tax_query\' => array(
array(
\'posts_per_page\' => 1,
\'order\' => \'DESC\',
\'taxonomy\' => \'section\',
\'field\' => \'slug\',
\'terms\' => \'video\'
)
)
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
?>
<img src="<?php echo has_post_thumbnail() ? the_post_thumbnail(\'thumbnail\') : get_thumbnail_fromyoutube(); ?>" alt="<?php the_title(); ?>"/>
<?php
}
}
wp_reset_query(); // Restore global post data stomped by the_post().
?>
SO网友:javierguillen29
好吧,假设帖子内容将由Youtube嵌入代码提供,则需要对正则表达式进行更改。
函数必须获取iframe的源。具体如下:
function get_thumbnail_fromyoutube( $size = 0 ) {
global $post, $posts;
$youtube = \'\';
$get_url = preg_match_all(\'/src="([^"]+)"/\', $post->post_content, $matches);
$youtube = $matches[1][0];
var_dump($youtube);
if(preg_match(\'/^(http:\\/\\/www.youtube.com)/\', $youtube)) {
$youtube = preg_replace(\'/(.*?).embed\\//\', \'\', $youtube);
$youtube = preg_replace(\'/\\?.(.*?)$/\', \'\', $youtube);
echo \'<img src="http://img.youtube.com/vi/\' . $youtube . \'/\' . $size . \'.jpg" alt="\' . $post->post_title . \'" />\';
}
}
其中变量“get\\u url”存储视频的url。
并始终记住删除循环中的“img”标记,只留下条件语句。
<?php if (has_post_thumbnail()) ? the_post_thumbnail(\'thumbnail\') : get_thumbnail_fromyoutube(); ?>