Here’s a code snippet that allows your plugin to create a new folder in the /uploads directory on activation. Could be useful if your plugin needs to allow imports or uploads and you want them stored in a separate directory.
[php]
function myplugin_activate() {
$upload = wp_upload_dir();
$upload_dir = $upload[‘basedir’];
$upload_dir = $upload_dir . ‘/mypluginfiles’;
if (! is_dir($upload_dir)) {
mkdir( $upload_dir, 0700 );
}
}
register_activation_hook( __FILE__, ‘myplugin_activate’ );
[/php]
If you enjoyed this post, make sure to subscribe to WP Mayor’s RSS feed.
3 Responses
I prefer use the WP way than the PHP way:
wp_mkdir_p( $upload_dir );
or more techy:
require_once( ABSPATH . ‘wp-admin/includes/class-wp-filesystem-base.php’ );
require_once( ABSPATH . ‘wp-admin/includes/class-wp-filesystem-direct.php’ );
$wp_fs_d = new WP_Filesystem_Direct( new StdClass() );
if ( !$wp_fs_d->is_dir( $upload_dir ) && !$wp_fs_d->mkdir( $upload_dir, 0705 ) )
wp_die( sprintf( __( ‘Impossible to create %s directory.’ ), $upload_dir ) );
By the way, WP recommand a 705 CHMOD, not 700, and take care readers: do not use “$uploads” var name this is overwritten by WordPress.
Probably would personally stick to wp_mkdir_p() here. Using the Filesystem API would probably be a bit of overkill!
Thanks, I agree, this is a better way.