wordpress根据图片的URL获取attachment ID)(根据第一张图片获取特色图像尺寸)

核心提示:今天的问题是如何根据图片的URL获取attachment ID,WordPress的特色图像功能多好,很多主题就是不用啊,要用post meta存储thumbnail地址,这下换主题了,新主题用特色图像,为了不丢失之前的数据,只好用程序设置特色图像了。...

今天的问题是如何根据图片的URL获取attachment ID,WordPress的特色图像功能多好,很多主题就是不用啊,要用post meta存储thumbnail地址,这下换主题了,新主题用特色图像,为了不丢失之前的数据,只好用程序设置特色图像了。

代码

代码短短的,不会很头疼。下面代码的好处是,即使图片地址带有尺寸信息,也不影响

function get_attachment_id_from_src ($link) {
    global $wpdb;
    $link = preg_replace('/-\d+x\d+(?=\.(jpg|jpeg|png|gif)$)/i', '', $link);
    return $wpdb->get_var("SELECT ID FROM {$wpdb->posts} WHERE guid='$link'");
}
我接下来要做的是将这张图片设置成post的特色图像,需要代码如下
$attachment_id = get_attachment_id_from_src( $img_url );
set_post_thumbnail($post_id, $attachment_id);
这段代码在网上找的,本意是通过压缩尺寸的图片找到原图,好获取一张不同尺寸的图片。
//Get a different size image
    $attachment_id = get_attachment_id_from_src( $src );
    $medium_im = wp_get_attachment_image_src( $attachment_id, 'medium');
//wp_get_attachment_image_src() is a wordpress function that returns an array with {src, width,height}  info.
echo '<img src="'.$medium_im[0].'" alt="" width="'.$medium_im[1].'" height="'.$medium_im[2].'" />';

还好图片都上传到了媒体库中,不然还得先把图片下载,再上传、创建缩略图再保存为特色图像。

这就看出使用WordPress内置功能的好处了,换主题方便。使用插件的道理亦如此,现在越来越不喜欢把好多著名插件的功能都集成进来的主题了。

参考文章

Get the WordPress post attachment ID from an Image Src

在线客服