今天的问题是如何根据图片的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内置功能的好处了,换主题方便。使用插件的道理亦如此,现在越来越不喜欢把好多著名插件的功能都集成进来的主题了。