我发现了一个名为oEmbed Featured Image的插件,除了输出最大的大小外,它绝对可以完成我想要的一切。
该插件的默认YouTube输出尺寸为480x360。我需要能够使用至少YouTube / Vimeo的全分辨率大小。
我想我可以编辑插件中第68行开始的功能。
以下是我的想法:
public function oembed_dataparse( $return, $data, $url )
{
if ($yt = $data->provider_name == 'YouTube')
{
if(preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $data->thumbnail_url, $youtube_id))
$ytvideo_id = $youtube_id;
$max = get_headers($data->thumbnail_url);
if (substr($max[0], 9, 3) !== '404')
{
$data->thumbnail_url = 'http://img.youtube.com/vi/$ytvideo_id/maxresdefault.jpg';
}
}
if ($vm = $data->provider_name == 'Vimeo')
{
if (preg_match("/https?:\/\/(?:www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|)(\d+)(?:$|\/|\?)/", $data->thumbnail_url, $vimeo_id))
$vmvideo_id = $vimeo_id[3];
$hash = unserialize(file_get_contents("http://vimeo.com/api/v2/video/$vmvideo_id.php"));
$data->thumbnail_url = $hash[0]['thumbnail_large'];
}
if ( ! empty( $data->thumbnail_url ) && ! $this->_thumb_id ) {
//if ( in_array( @ $data->type, array( 'video' ) ) ) // Only set for video embeds
$this->set_thumb_by_url( $data->thumbnail_url, @ $data->title );
}
}
答案 0 :(得分:2)
在此链接中有解释如何更改wp的预设。
Featured Images & Post Thumbnails
我觉得你可能觉得很有趣,可能你不需要使用插件。 the_post_thumbnail( 'full' ); // Original image resolution (unmodified)
在链接中写道: WordPress的默认图像尺寸为“缩略图”,“中”,“大”和“全尺寸”(您上传图像的原始尺寸)。可以在>设置>下的WordPress管理媒体面板中配置这些图像大小。媒体。您还可以通过传递包含图像尺寸的数组来定义自己的图像大小:
he_post_thumbnail(); // Without parameter ->; Thumbnail
the_post_thumbnail( 'thumbnail' ); // Thumbnail (default 150px x 150px max)
the_post_thumbnail( 'medium' ); // Medium resolution (default 300px x 300px max)
the_post_thumbnail( 'large' ); // Large resolution (default 640px x 640px max)
the_post_thumbnail( 'full' ); // Original image resolution (unmodified)
the_post_thumbnail( array( 100, 100 ) ); // Other resolutions (height, width)
设置特色图像输出尺寸#设置特色图像输出尺寸 要在当前Theme的functions.php文件中使用。 您可以使用set_post_thumbnail_size()通过按比例调整图像大小来设置默认的特色图像大小(即,不会扭曲图像):
set_post_thumbnail_size( 50, 50 ); // 50 pixels wide by 50 pixels tall, resize mode
通过裁剪图像(从侧面或从顶部和底部)设置默认的特色图像尺寸:
set_post_thumbnail_size( 50, 50, true ); // 50 pixels wide by 50 pixels tall, crop mode
在此链接中,您可以看到更多代码:https://developer.wordpress.org/reference/functions/the_post_thumbnail/
使用the_post_thumbnail()或相关函数时,默认使用“缩略图后”图像大小,但可以根据需要指定不同的大小。
其他链接我认为你会发现有趣的是:Image Size and Quality 但它更通用。
视频以某种方式工作。当然取决于youtube中视频的质量,你可以决定你想要显示的大小。如果您不使用不同的媒体播放器,您将使用默认的YouTube播放器,您可以使用该API执行您想要的操作。
我希望我能提供帮助。
答案 1 :(得分:2)
您需要做的是实际修改youtube if if语句以使其查看$url
,而不是$data->thumbnail_url
。这会导致您的preg_match()
正确匹配,并且会返回正确的$yt_videoid
供您使用。