• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

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

    发布者: 天下网吧 | 发布时间: 2025-6-19 12:16| 查看数: 98| 评论数: 0|帖子模式

    这个动作我们使用一个hook来实现:
     
    复制代码代码如下:
    add_action('publish_post', 'fetch_images',999); 
    再创建一个fetch_images函数,来实现本文所说的所有功能。
     
    复制代码代码如下:
    function fetch_images( $post_ID ){
    if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return;
    if ( !current_user_can('edit_post', $post_ID) ) return;
    $post = get_post($post_ID); 
    接下来,我们要获取文章内容中的第一张图片:
     
    复制代码代码如下:
    $first_image = '';
    preg_match('/
    /i',$post->post_content,$images);
    if(!empty($images))foreach($images as $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等原创抓取和信息获取函数,你可以查看官方文档以了解和remote相关的函数。wp_upload_bits则将抓取到的图片的二进制内容保存到本地,根据其文件类型,最终成为本地保存的图片,并将保存完后获得的本地图片信息保存在$mirror中。
    既然已经保存到本地了,接下来就是将图片信息保存到数据库中。

    来源:https://zhuji.jb51.net/wordpress/7715.html
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    浏览过的版块

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表