来自YouTube的缩略图(函数和循环)

时间:2014-06-24 作者:user3766356

嗨: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().
                    ?> 

1 个回复
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(); ?>

结束

相关推荐

is_active-sidebar loop

因此,我有4个小部件,它们位于大3列中,当它们不活动时,我会放置一个占位符作为用户指南,以便用户知道在哪里放置什么。我确实成功地计算出了is\\u active,但它原来是一个很长的代码,我想知道是否有办法缩短它。从available-course-list-1到-4的小部件<?php if ( is_active_sidebar( \'available-course-list-1\' ) ) : ?> <div class=\"large-3 medium-3 col