Code Snippet to Create a Directory Within Uploads Folder

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.

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’ );
If you enjoyed this post, make sure to subscribe to WP Mayor’s RSS feed.

About Jean Galea

Jean Galea is a WordPress developer, entrepreneur and padel player. He is the founder of WP Mayor, the plugins WP RSS Aggregator and EDD Bookings, as well as the podcast. His personal blog can be found at

Related Articles

3 Responses

  1. BoiteAWeb (@BoiteAWeb)
    BoiteAWeb (@BoiteAWeb) November 1, 2012 at 13:07 | | Reply

    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.

    1. Matthew Ruddy
      Matthew Ruddy November 1, 2012 at 17:23 | | Reply

      Probably would personally stick to wp_mkdir_p() here. Using the Filesystem API would probably be a bit of overkill!

Leave a Reply