如何将Year和Month文件夹添加到上传目录?

时间:2015-04-02 作者:AlanP

如何将月份(和年份)文件夹自动添加到上载目录?我正在编写的插件跟踪上传中的文件夹,我希望能够在每个月创建新文件夹时添加这些文件夹。是否有与其流程相关的筛选器或操作?

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

以下是我对流程的理解:

这个wp_upload_dir() 功能是上载文件夹创建过程和wp_mkdir_p() 功能是有用的助手。

每次wp_upload_dir() 它实际上是在运行file_exists() 通过检查当前上载文件夹wp_mkdir_p() 作用如果文件夹不存在,则使用mkdir(), 但不是$wp_filesystem->mkdir() 正如人们所料。

这个wp_upload_dir() 函数检查uploads_use_yearmonth_folders 选项已设置。在这种情况下,年/月文件夹是由default, 从的当前时间current_time( \'mysql\' ):

// ... cut ...

if ( get_option( \'uploads_use_yearmonth_folders\' ) ) {
    // Generate the yearly and monthly dirs
    if ( !$time )
         $time = current_time( \'mysql\' );
    $y = substr( $time, 0, 4 );
    $m = substr( $time, 5, 2 );
    $subdir = "/$y/$m";
}

$dir .= $subdir;
$url .= $subdir;

// ... cut ...

// Make sure we have an uploads directory.
if ( ! wp_mkdir_p( $uploads[\'path\'] ) ) {

// ... cut ...
在哪里$uploads[\'path\'] 已分配给$dir.

这个wp_upload_dir() 函数在_wp_handle_upload() 上载期间隐式应用的函数。我们还注意到media_handle_{upload,sideload}() 函数是wp_handle_{upload,sideload}() 函数的包装器_wp_handle_upload() 作用

因此,我想知道您是否希望加入这些上载过程,例如使用wp_handle_upload 中的筛选器_wp_handle_upload() 功能:

/**
 * Hook into the upload/sideload processes and check out the upload path.
 */

add_filter( \'wp_handle_upload\', function( $args, $action )
{
    if( isset( $args[\'file\'] ) && file_exists( $args[\'file\'] ) )
    {
        // Upload path of the new file:
        $path = dirname( $args[\'file\'] )

        // ... do stuff here ...
    }            
    return $args;
}, 99, 2 );
在哪里$args[\'file\'] 包含上载文件的本地路径,以及$action 可以是“上传”或“侧载”。

结束

相关推荐

将WordPress附件导入wp-Content/Uploads/中的自定义目录

我希望有人能阐明我试图解决的这个问题,即使只是简单地改变我的思维过程,告诉我如何解决这个问题。我正在将一个基于CakePHP的定制CMS web应用程序导入WordPress,方法是遍历数据库,进行大量SQL查询,构建数组,最后输出必要的XML文件,以便使用WordPress导入工具导入。目前我已经很好地导入了类别、标签和帖子/页面,没有问题,但问题似乎出在图像上。基于CakePHP的CMS中当前的图像格式是images/year/month/day/post_id/image_name.ext据我所知,