wordpress抓取文章第一张远程图片保存到本地的方法

wordpress抓取文章第一张远程图片保存到本地的方法,第1张

wordpress="superseo">ss抓取文章第一张远程图片保存到本地的方法

在一些新项目中,网站允许客户使用外部图片发布文章内容,或者由于一些独特的原因,网站期望抓取原文中的第一张遥控器图片作为特色图片,并将此图片存储在本地,插入类似QQ空的数据库查询。总而言之,经过一系列的姿势,网站期望发现,这张原本是遥控链的图片被放到了当地,变成了

每个人都应该用一个钩子来完成这个体式:


复制代码编码如下:
Add_Action('publish_post','fetch_images',999);

然后建立一个fetch_images函数来完成本文经常提到的所有功能。


复制代码编码如下:
functionfetch_images($post_id){
if(defined('doing_autosave')&&;DOING_AUTOSAVE)返回;
如果(!current_user_can('edit_post',$post_ID))return;
$post=get_post($post_ID);

接下来,我们要获取文章中的第一张图:


复制代码编码以下:
$first_image='';
preg_match('/<img.src=[\'\"]([^\'\"])[\'\"].*\/>/i',$post->post_content,$images);
if(!empty($images))foreach($imagesas$image){
if(strpos($image,'http')===0){
$first_image=$images[1];
break;
}
}

复制代码编码如下:
$first_image='';
preg_match('/<;img。src=[\'\"]([^\'\"])[\'\"]。*\/>;/i',$post->;post_content,$images);
如果(!empty($images))foreach($imagesas$image){
if(strpos($image,'http')===0){
$first_image=$images[1];
break;
}
}

但是,实际上根据上述编码得到的图片src很可能存在一些问题,或者根本没有抓取数据信息。不过先不考虑这种难题,先把这篇文章里的总体目标做完再说。

接下来是重要的代码一,它有两个功能“抓取-本地存储”:


复制代码编码如下:
$get=WP_remote_get($get_image_src);
$type=WP_remote_retrieve_header($get,'content-type');
$file_name=basename($get_image_src);
$file_content=WP_remote_retrieve_body($get);
$mirror=WP_upload_bits($file_name,null,$file_content);

这个地方有一个变化,每个人都获得$first_image,这个地方的$get_image_src就是要抓取的遥控器图片的详细地址。

在WordPress中,呈现了wp_remote_get、wp_remote_retrieve_body等原创抓取和信息内容获取功能。可以查询官网文本文档,掌握远程相关功能。Wp_upload_bits将抓取的图片的二进制内容存储在本地,最后根据其文件属性成为本地存储的图片,并将本地存储的图片的信息内容存储在$mirror中。

但是已经存储在本地了,下一步就是在数据库查询中存储图片信息内容。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/772483.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存