在哪里存储插件上传的媒体?

时间:2016-09-25 作者:Mateusz Bartkowski

是否有关于如何存储上传并仅由插件使用的媒体的约定?那会是/wp-content/uploads/plugin_name 还是应该像其他媒体一样存储(按时间顺序)?尤其是如果有很多图像可以很容易地分类到文件夹中(例如。plugin_name/players, plugin_name/clubs)?

如果答案是在中创建自己的插件文件夹uploads, 您如何更改插件管理页面中上传媒体的上传目录?

1 个回复
SO网友:Ahmed Fouad

您可以这样做,在中创建自己的插件上载文件夹/wp-content/uploads 下面的代码基本上将在上载中创建一个名为myplugin_uploads 然后放一个空的index.html 里面。

动态创建自定义上载文件夹

add_action( \'init\', \'create_files\' );
function create_files() {

    $upload_dir      = wp_upload_dir();

    $files = array(
        array(
            \'base\'      => $upload_dir[\'basedir\'] . \'/myplugin_uploads\',
            \'file\'      => \'index.html\',
            \'content\'   => \'\'
        )
    );

    foreach ( $files as $file ) {
        if ( wp_mkdir_p( $file[\'base\'] ) && ! file_exists( trailingslashit( $file[\'base\'] ) . $file[\'file\'] ) ) {
            if ( $file_handle = @fopen( trailingslashit( $file[\'base\'] ) . $file[\'file\'], \'w\' ) ) {
                fwrite( $file_handle, $file[\'content\'] );
                fclose( $file_handle );
            }
        }
    }

}
现在实际上,您需要更改上传目录/目的地。您可以使用upload_dir 过滤器挂钩。

示例

add_filter(\'upload_dir\', \'myplugin_upload_dir\');
function myplugin_upload_dir( $param ){
    $mydir = \'/myplugin_uploads\';

    $param[\'path\'] = $param[\'path\'] . $mydir;
    $param[\'url\'] = $param[\'url\'] . $mydir;

    return $param;
}
完成后,可以使用以下代码删除筛选器:

remove_filter(\'upload_dir\', \'myplugin_upload_dir\');

相关推荐

尽管ALLOW_UNFIRTED_UPLOADS设置为TRUE,.epub文件仍被阻止

我仍然得到X.epub:抱歉,出于安全原因,不允许使用此文件类型;尽管添加了:define(\'ALLOW_UNFILTERED_UPLOADS\', true); 给我的wp-config.php.当然,我允许在博客网络的配置中使用这种类型的文件:这是正常情况吗(以及using filters 是唯一的解决方法吗)?或者这是一件奇怪的事情(比如某个插件或主题覆盖了它),你应该继续寻找可能的原因?EDIT (在评论和更多测试之后):这是。epub文件仅与问题相关。我能够证实ALLOW_UNFIL