今天的问题是如何根据图片的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内置功能的好处了,换主题方便。使用插件的道理亦如此,现在越来越不喜欢把好多著名插件的功能都集成进来的主题了。
$content = $post->post_content;
$test = 正则已经获取了文章的第一个图片
$attachment_id = get_attachment_id_from_src($test );
$medium_im = wp_get_attachment_image_src( $attachment_id, ‘medium’);
我用正则提取了正文的第一张图片
因为第一张图片是原图, 我想根据这个原图返回这个图片的 缩略图? 可以吗?
应该可以,前提是这张图片是上传到媒体库的。
我觉得直接用php脚本压缩图片更简单,比如https://github.com/bfintal/bfi_thumb
评论不让帖PHP代码?