是否在上载前筛选/挂钩以获取附件ID?

时间:2015-12-13 作者:hrsetyono

我需要从camera-like重命名原始文件名DCM4819032.jpg2015-12-11-204213.jpg 更有条理的人IMG_00015.jpg.

我想我会用attachment ID 作为该名称中的数字。

到目前为止,我找到了一种在上传之前更改文件名的方法,但无法访问即将发布的ID。

add_filter("wp_handle_upload_prefilter", function ($file) {
  $file["name"] = "custom-name.jpg";
  return $file;
}, 1, 1);
有没有办法知道这个附件会有什么ID?

[EDIT]

从中找到了一条路this question, 它可以工作,但它会禁用图像大小调整,这对我来说很重要。

add_action("add_attachment", function($file_id) {
  $file = get_attached_file($file_id);
  $path = pathinfo($file);

  $newfile_name = "IMG_" . $file_id . "." . $path["extension"];  
  $newfile = $path["dirname"] . "/" . $newfile_name;

  rename($file, $newfile);
  update_attached_file($file_id, $newfile);
});
从评论中可以看出,“WordPress不会理解发生了重命名”,这可能是调整大小不起作用的原因。

1 个回复
SO网友:Mark Kaplun

你只是把自己弄得很复杂。如果您想要一个顺序ID,只需将其存储在一个选项中,并在每次新上载时增加其值。比赛条件的可能性很小,可能会导致两幅图像的名称分别为IMG\\u N.png和IMG\\u N-2。png,但在一次只有一位作者的网站上,这种情况根本不可能发生。

相关推荐

Organizing media uploads

我的一个客户想把他的WordPress网站转移到我的服务器上。问题是他的网站没有在他的上传文件夹中使用子文件夹,而他上传文件夹的根目录中有超过1000000个文件。有没有一种方法可以将他的所有帖子上传到文件夹中,而不会丢失帖子中的附加链接和特色图片?