如何让通过ftp或脚本传输的图像出现在媒体管理器中?

时间:2011-03-23 作者:Scott B

我有一个插件,可以将一些文件传输到安装该插件的站点的上传文件夹。

它工作正常,但图像不会显示在媒体管理器中。我希望涉及一些数据库注册。

考虑到下面的脚本将文件复制到目录中,我需要向循环中添加什么命令来为media manager注册每个图像?

    foreach(new RecursiveIteratorIterator($rdi) as $files) 
    {
         if ($files->isFile()) 
         {
            $imagepath = $files->getRealPath();
            $image = basename($files->getPathname());
            copy($imagepath, $my_target_folder.\'/\'.$image);
         }
    }

2 个回复
最合适的回答,由SO网友:Bainternet 整理而成

将此添加到for each,并将$filename添加到每个文件,

 $wp_filetype = wp_check_filetype(basename($filename), null );
  $attachment = array(
     \'post_mime_type\' => $wp_filetype[\'type\'],
     \'post_title\' => preg_replace(\'/\\.[^.]+$/\', \'\', basename($filename)),
     \'post_content\' => \'\',
     \'post_status\' => \'inherit\'
  );
  $attach_id = wp_insert_attachment( $attachment, $filename, 0 );
  // you must first include the image.php file
  // for the function wp_generate_attachment_metadata() to work
  require_once(ABSPATH . "wp-admin" . \'/includes/image.php\');
  $attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
  wp_update_attachment_metadata( $attach_id,  $attach_data );

SO网友:goldenapples

你看过函数了吗media_handle_sideload()? 这似乎就是你要找的。

它的工作方式与media\\u handle\\u upload()基本相同,但会获取本地服务器上已有的文件,将其移动到当前上载目录,并生成将其添加到media Manager所需的post记录。

结束

相关推荐

Resizing all images

我刚刚更改了博客的主题,由于页面宽度很小,它打破了布局。我之前的大多数图片(附在帖子中)的宽度都在600px左右,现在我需要按450px的比例调整它们的大小。如何一次性调整它们的大小?有这个插件吗?P、 美国:编写CSS规则是一个很好的选择,我已经做到了。但我认为调整图像大小也会减少每个页面的下载开销!