错误:删除文件,然后再次上传相同的文件会将文件放在旧的月份文件夹中

时间:2012-05-23 作者:HandiworkNYC.com

这是wordpress按月组织媒体文件的问题。

要重新创建问题,请执行以下操作:

从上个月删除图像文件上载相同的图像文件(相同的名称)

  • 新上载的文件将与原来的文件放在同一个月文件夹中,而不是当前月份

    有人有过这种“bug”的经验吗?wordpress和s3插件的正确行为是什么?

    谢谢

    一些澄清:

    看起来,s3插件和wordpress在创建基于月份的上传文件夹时并没有并行工作。

    s3始终使用当前月份。换言之,无论帖子的发布日期如何,上传内容都会放在当月文件夹中(即,如果今天的日期是2012年5月,我上传一张图片,然后转到s3bucket/uploads/2012/05/)

    相比之下,wordpress似乎根据帖子的原始创建日期将图像放在文件夹中。因此,如果您在2月份创建一篇文章,另存为草稿,然后在5月份添加图像,然后发布,在s3中,您的图像将在2012/05年发布,而在常规服务器中,图像将在2012/02年发布。这对我来说是一个严重的问题,因为有很多原因太复杂了,无法在这里讨论,但这仍然是一个严重的问题。

  • 1 个回复
    SO网友:MathSmath

    一些你可以尝试的东西,但我还没有完全测试过,你需要做一些QA来确保它不会影响其他任何东西。说明:

    返回上载目录路径的函数称为wp\\u upload\\u dir()。它被用于许多地方(以及许多插件)来生成,呃,上传目录的路径。它接受一个名为time的参数,该参数(通过时)将指示在dir结构中使用哪个年/月。

    不幸的是,当从帖子上传时,没有地方可以过滤这个“时间”。从帖子编辑屏幕上载媒体时,执行上载的函数(我敢肯定称为media\\u handle\\u upload())始终使用帖子的发布日期。它仅在上载与帖子无关时使用当前时间。那里没有过滤器。

    但是wp\\u upload\\u dir()函数有一个可以使用的过滤器,名为“upload\\u dir”。它过滤包含生成的目录的所有部分的数组。其中一个数组项名为“subdir”,它包含路径的年/月部分(如果适用)。您可以使用此筛选器检查子目录部分是否为非空,如果为空,则将其值替换为当前年/月。

    这里的冒险在于,您无法说出调用wp\\u upload\\u dir的上下文,并且您打赌没有其他函数以会中断的方式实际使用时间参数。我快速查看了一下核心,我看到它使用的唯一地方是wp\\u upload\\u bits函数,我不确定它到底是用来做什么的。在任何情况下,我猜只有在实际上传文件时才会调用它,所以您可能在这方面做得很好。但您需要使用已安装的插件进行彻底测试。

    代码如下所示:

        function wpsx_53067_filter_upload_dir($arr) {
    
            if(isset($arr[\'subdir\']) && !empty($arr[\'subdir\'])) {
    
                // The existing dir, for reference
                $old_dir = $arr[\'subdir\'];
    
                // Your new dir (you could edit this to grab the current year/month)
                $new_dir = \'/any-new-dir-you-like\';
    
                // Update the array. Need to update the subdir, path and url items (they all contain the full path)
                $arr[\'subdir\'] = $new_dir;
                $arr[\'path\'] = str_replace($old_dir, $new_dir, $arr[\'path\']);
                $arr[\'url\'] = str_replace($old_dir, $new_dir, $arr[\'url\']);
    
            }
    
            return $arr;
    
        }
       add_filter(\'upload_dir\', \'wpsx_53067_filter_upload_dir\');
    

    结束

    相关推荐

    将插件的子目录+文件移动到wp-Content/Uploads-目录的最佳方式是什么?

    我是插件传单地图标记的开发人员(http://www.mapsmarker.com - “通过OpenStreetMap、OGD Vienna或任何自定义WMTS地图锁定、组织和显示您最喜爱的地点”),但有一个问题:该插件包含来自“地图图标”集合(mapicons.nicolasmollet.com)的大约100个标记图标,可用于标记您最喜爱的地点。这些图标存储在wp-content\\plugins\\leaflet-mapsmarker\\img\\mapicons. 现在,用户可以从集合中上传其他