Changeset 2780533
- Timestamp:
- 09/06/2022 08:37:26 AM (3 years ago)
- Location:
- custom-upload-folder
- Files:
-
- 6 edited
- 1 copied
-
assets/screenshot-1.png (modified) (1 prop) (previous)
-
assets/screenshot-2.png (modified) (1 prop) (previous)
-
tags/1.1 (copied) (copied from custom-upload-folder/trunk)
-
tags/1.1/custom-upload-folder.php (modified) (2 diffs)
-
tags/1.1/readme.txt (modified) (2 diffs)
-
trunk/custom-upload-folder.php (modified) (2 diffs)
-
trunk/readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
custom-upload-folder/assets/screenshot-1.png
-
Property
svn:mime-type
changed from
application/octet-streamtoimage/png
-
Property
svn:mime-type
changed from
-
custom-upload-folder/assets/screenshot-2.png
-
Property
svn:mime-type
changed from
application/octet-streamtoimage/png
-
Property
svn:mime-type
changed from
-
custom-upload-folder/tags/1.1/custom-upload-folder.php
r2320834 r2780533 3 3 Plugin Name: Custom Upload Folder 4 4 Description: Upload files to custom directory in WP Media Library. 5 Version: 1. 05 Version: 1.1 6 6 Author: Motekar 7 7 Author URI: https://motekar.com/ … … 11 11 class CustomUploadFolder 12 12 { 13 private $default_folders = "assets\r\nassets/img\r\nassets/css\r\nassets/js";13 private $default_folders = "assets\r\nassets/img\r\nassets/css\r\nassets/js"; 14 14 15 public function __construct() { 16 add_action( 'pre-upload-ui', [$this, 'custom_upload_folder_select'] ); 15 public function __construct() 16 { 17 add_action('pre-upload-ui', [$this, 'custom_upload_folder_select']); 17 18 18 // Media table 19 add_filter( 'manage_media_columns', function( $columns ) { 20 $columns['folder'] = 'Folder'; 21 return $columns; 22 } ); 19 // Media table 20 add_filter('manage_media_columns', function ($columns) { 21 $columns['folder'] = 'Folder'; 23 22 24 add_action( 'manage_media_custom_column', function( $column_name, $post_ID ) { 25 if( 'folder' == $column_name ) { 26 $file = pathinfo( get_post_meta( $post_ID, '_wp_attached_file', true ) ); 27 echo $file['dirname']; 28 } 29 }, 10, 2 ); 23 return $columns; 24 }); 30 25 31 add_action( 'admin_init', [$this, 'admin_init'] ); 26 add_action('manage_media_custom_column', function ($column_name, $post_ID) { 27 if ('folder' == $column_name) { 28 $file = pathinfo(get_post_meta($post_ID, '_wp_attached_file', true)); 29 echo $file['dirname']; 30 } 31 }, 10, 2); 32 32 33 // Check if from media uploader. 34 if ( preg_match( '/(async-upload|media-new)\.php/', $_SERVER['REQUEST_URI'] ) ) { 35 // before upload 36 add_filter( 'wp_handle_upload_prefilter', function( $file ) { 37 add_filter( 'upload_dir', [$this, 'upload_dir'] ); 33 add_action('admin_init', [$this, 'admin_init']); 38 34 39 return $file; 40 } ); 35 // Check if from media uploader. 36 if (preg_match('/(async-upload|media-new)\.php/', $_SERVER['REQUEST_URI'])) { 37 // before upload 38 add_filter('wp_handle_upload_prefilter', function ($file) { 39 add_filter('upload_dir', [$this, 'upload_dir']); 41 40 42 // after 43 add_filter( 'wp_handle_upload', function( $file ) { 44 remove_filter( 'upload_dir', [$this, 'upload_dir'] ); 41 return $file; 42 }); 45 43 46 return $file; 47 } ); 48 } 49 } 44 // after 45 add_filter('wp_handle_upload', function ($file) { 46 remove_filter('upload_dir', [$this, 'upload_dir']); 50 47 51 public function upload_dir( $dirs ) { 52 $folder_in_cookie = sanitize_text_field( filter_input( INPUT_COOKIE, 'custom_upload_folder' ) ); 48 return $file; 49 }); 50 } 51 } 53 52 54 if ( empty( $folder_in_cookie ) ) { 55 return $dirs; 56 } 53 public function upload_dir($dirs) 54 { 55 $folder_in_cookie = sanitize_text_field(filter_input(INPUT_COOKIE, 'custom_upload_folder')); 57 56 58 $folders = explode( "\r\n", esc_attr( get_option( 'custom_upload_folders' ) ) ); 57 if (empty($folder_in_cookie)) { 58 return $dirs; 59 } 59 60 60 if ( in_array( $folder_in_cookie, $folders ) ) { 61 $dirs['subdir'] = '/' . $folder_in_cookie; 62 $dirs['path'] = $dirs['basedir'] . '/' . $folder_in_cookie; 63 $dirs['url'] = $dirs['baseurl'] . '/' . $folder_in_cookie; 64 } 61 $folders = explode("\r\n", esc_attr(get_option('custom_upload_folders'))); 65 62 66 return $dirs; 67 } 63 if (in_array($folder_in_cookie, $folders)) { 64 $dirs['subdir'] = '/'.$folder_in_cookie; 65 $dirs['path'] = $dirs['basedir'].'/'.$folder_in_cookie; 66 $dirs['url'] = $dirs['baseurl'].'/'.$folder_in_cookie; 67 } 68 68 69 function admin_init() { 70 register_setting( 71 'media', 72 'custom_upload_folders', 73 [ 74 'type' => 'string', 75 'default' => $this->default_folders, 76 ] 77 ); 69 return $dirs; 70 } 78 71 79 add_settings_section( 80 'custom_upload_folders_section', 81 __( 'Custom Upload Folder', __FILE__ ), 82 '', 83 'media' 84 ); 72 public function admin_init() 73 { 74 register_setting( 75 'media', 76 'custom_upload_folders', 77 [ 78 'type' => 'string', 79 'default' => $this->default_folders, 80 ] 81 ); 85 82 86 add_settings_field( 87 'folders', 88 __( 'Custom Upload Folders', __FILE__ ), 89 array( $this, 'folders_input_callback' ), 90 'media', 91 'custom_upload_folders_section' 92 ); 93 } 94 95 function folders_input_callback() { 96 ?> 97 <textarea id="custom_upload_folders" name="custom_upload_folders" class="regular-text ltr" rows="7"><?php echo esc_attr( get_option( 'custom_upload_folders' ) ); ?></textarea> 83 add_settings_section( 84 'custom_upload_folders_section', 85 __('Custom Upload Folder', __FILE__), 86 '', 87 'media' 88 ); 89 90 add_settings_field( 91 'folders', 92 __('Custom Upload Folders', __FILE__), 93 [$this, 'folders_input_callback'], 94 'media', 95 'custom_upload_folders_section' 96 ); 97 } 98 99 public function folders_input_callback() 100 { 101 ?> 102 <textarea id="custom_upload_folders" name="custom_upload_folders" class="regular-text ltr" rows="7"><?php echo esc_attr(get_option('custom_upload_folders')); ?></textarea> 98 103 <?php 99 }104 } 100 105 101 function custom_upload_folder_select() { 102 $folders = explode( "\r\n", get_option( 'custom_upload_folders', $this->default_folders ) ); ?> 103 <?php _e( 'Select Upload Folder', __FILE__ ); ?> 106 public function custom_upload_folder_select() 107 { 108 $folders = explode("\r\n", get_option('custom_upload_folders', $this->default_folders)); ?> 109 <?php _e('Select Upload Folder', __FILE__); ?> 104 110 <select class="js-custom-upload-folder" onchange="document.cookie='custom_upload_folder=' + event.target.value + ';path=<?php echo COOKIEPATH; ?>'"> 105 <option value=""><?php _e( 'Default', __FILE__); ?></option>106 <?php foreach ( $folders as $folder) {107 $folder = trim( $folder);108 echo "<option value=\"{$folder}\">{$folder}</option>";109 } ?>111 <option value=""><?php _e('Default', __FILE__); ?></option> 112 <?php foreach ($folders as $folder) { 113 $folder = trim($folder); 114 echo "<option value=\"{$folder}\">{$folder}</option>"; 115 } ?> 110 116 </select> 111 117 <img onload=" 112 118 var match = document.cookie.match( new RegExp( '(^| )custom_upload_folder=([^;]+)' ) ); 113 119 document.getElementsByClassName('js-custom-upload-folder')[0].value = match ? match[2] : ''; 114 " 120 " 115 121 src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" /> 116 <?php } 122 <?php 123 } 117 124 } 118 125 -
custom-upload-folder/tags/1.1/readme.txt
r2320834 r2780533 4 4 Tags: media, upload, assets 5 5 Requires at least: 4.6 6 Tested up to: 5.47 Stable tag: 1. 06 Tested up to: 6.0.2 7 Stable tag: 1.1 8 8 Requires PHP: 5.3 9 9 License: GPLv2 or later … … 29 29 == Changelog == 30 30 31 = 1.1 = 32 * WordPress 6.x support. 33 31 34 = 1.0 = 32 35 * Add pre-select dropdown option. -
custom-upload-folder/trunk/custom-upload-folder.php
r2320834 r2780533 3 3 Plugin Name: Custom Upload Folder 4 4 Description: Upload files to custom directory in WP Media Library. 5 Version: 1. 05 Version: 1.1 6 6 Author: Motekar 7 7 Author URI: https://motekar.com/ … … 11 11 class CustomUploadFolder 12 12 { 13 private $default_folders = "assets\r\nassets/img\r\nassets/css\r\nassets/js";13 private $default_folders = "assets\r\nassets/img\r\nassets/css\r\nassets/js"; 14 14 15 public function __construct() { 16 add_action( 'pre-upload-ui', [$this, 'custom_upload_folder_select'] ); 15 public function __construct() 16 { 17 add_action('pre-upload-ui', [$this, 'custom_upload_folder_select']); 17 18 18 // Media table 19 add_filter( 'manage_media_columns', function( $columns ) { 20 $columns['folder'] = 'Folder'; 21 return $columns; 22 } ); 19 // Media table 20 add_filter('manage_media_columns', function ($columns) { 21 $columns['folder'] = 'Folder'; 23 22 24 add_action( 'manage_media_custom_column', function( $column_name, $post_ID ) { 25 if( 'folder' == $column_name ) { 26 $file = pathinfo( get_post_meta( $post_ID, '_wp_attached_file', true ) ); 27 echo $file['dirname']; 28 } 29 }, 10, 2 ); 23 return $columns; 24 }); 30 25 31 add_action( 'admin_init', [$this, 'admin_init'] ); 26 add_action('manage_media_custom_column', function ($column_name, $post_ID) { 27 if ('folder' == $column_name) { 28 $file = pathinfo(get_post_meta($post_ID, '_wp_attached_file', true)); 29 echo $file['dirname']; 30 } 31 }, 10, 2); 32 32 33 // Check if from media uploader. 34 if ( preg_match( '/(async-upload|media-new)\.php/', $_SERVER['REQUEST_URI'] ) ) { 35 // before upload 36 add_filter( 'wp_handle_upload_prefilter', function( $file ) { 37 add_filter( 'upload_dir', [$this, 'upload_dir'] ); 33 add_action('admin_init', [$this, 'admin_init']); 38 34 39 return $file; 40 } ); 35 // Check if from media uploader. 36 if (preg_match('/(async-upload|media-new)\.php/', $_SERVER['REQUEST_URI'])) { 37 // before upload 38 add_filter('wp_handle_upload_prefilter', function ($file) { 39 add_filter('upload_dir', [$this, 'upload_dir']); 41 40 42 // after 43 add_filter( 'wp_handle_upload', function( $file ) { 44 remove_filter( 'upload_dir', [$this, 'upload_dir'] ); 41 return $file; 42 }); 45 43 46 return $file; 47 } ); 48 } 49 } 44 // after 45 add_filter('wp_handle_upload', function ($file) { 46 remove_filter('upload_dir', [$this, 'upload_dir']); 50 47 51 public function upload_dir( $dirs ) { 52 $folder_in_cookie = sanitize_text_field( filter_input( INPUT_COOKIE, 'custom_upload_folder' ) ); 48 return $file; 49 }); 50 } 51 } 53 52 54 if ( empty( $folder_in_cookie ) ) { 55 return $dirs; 56 } 53 public function upload_dir($dirs) 54 { 55 $folder_in_cookie = sanitize_text_field(filter_input(INPUT_COOKIE, 'custom_upload_folder')); 57 56 58 $folders = explode( "\r\n", esc_attr( get_option( 'custom_upload_folders' ) ) ); 57 if (empty($folder_in_cookie)) { 58 return $dirs; 59 } 59 60 60 if ( in_array( $folder_in_cookie, $folders ) ) { 61 $dirs['subdir'] = '/' . $folder_in_cookie; 62 $dirs['path'] = $dirs['basedir'] . '/' . $folder_in_cookie; 63 $dirs['url'] = $dirs['baseurl'] . '/' . $folder_in_cookie; 64 } 61 $folders = explode("\r\n", esc_attr(get_option('custom_upload_folders'))); 65 62 66 return $dirs; 67 } 63 if (in_array($folder_in_cookie, $folders)) { 64 $dirs['subdir'] = '/'.$folder_in_cookie; 65 $dirs['path'] = $dirs['basedir'].'/'.$folder_in_cookie; 66 $dirs['url'] = $dirs['baseurl'].'/'.$folder_in_cookie; 67 } 68 68 69 function admin_init() { 70 register_setting( 71 'media', 72 'custom_upload_folders', 73 [ 74 'type' => 'string', 75 'default' => $this->default_folders, 76 ] 77 ); 69 return $dirs; 70 } 78 71 79 add_settings_section( 80 'custom_upload_folders_section', 81 __( 'Custom Upload Folder', __FILE__ ), 82 '', 83 'media' 84 ); 72 public function admin_init() 73 { 74 register_setting( 75 'media', 76 'custom_upload_folders', 77 [ 78 'type' => 'string', 79 'default' => $this->default_folders, 80 ] 81 ); 85 82 86 add_settings_field( 87 'folders', 88 __( 'Custom Upload Folders', __FILE__ ), 89 array( $this, 'folders_input_callback' ), 90 'media', 91 'custom_upload_folders_section' 92 ); 93 } 94 95 function folders_input_callback() { 96 ?> 97 <textarea id="custom_upload_folders" name="custom_upload_folders" class="regular-text ltr" rows="7"><?php echo esc_attr( get_option( 'custom_upload_folders' ) ); ?></textarea> 83 add_settings_section( 84 'custom_upload_folders_section', 85 __('Custom Upload Folder', __FILE__), 86 '', 87 'media' 88 ); 89 90 add_settings_field( 91 'folders', 92 __('Custom Upload Folders', __FILE__), 93 [$this, 'folders_input_callback'], 94 'media', 95 'custom_upload_folders_section' 96 ); 97 } 98 99 public function folders_input_callback() 100 { 101 ?> 102 <textarea id="custom_upload_folders" name="custom_upload_folders" class="regular-text ltr" rows="7"><?php echo esc_attr(get_option('custom_upload_folders')); ?></textarea> 98 103 <?php 99 }104 } 100 105 101 function custom_upload_folder_select() { 102 $folders = explode( "\r\n", get_option( 'custom_upload_folders', $this->default_folders ) ); ?> 103 <?php _e( 'Select Upload Folder', __FILE__ ); ?> 106 public function custom_upload_folder_select() 107 { 108 $folders = explode("\r\n", get_option('custom_upload_folders', $this->default_folders)); ?> 109 <?php _e('Select Upload Folder', __FILE__); ?> 104 110 <select class="js-custom-upload-folder" onchange="document.cookie='custom_upload_folder=' + event.target.value + ';path=<?php echo COOKIEPATH; ?>'"> 105 <option value=""><?php _e( 'Default', __FILE__); ?></option>106 <?php foreach ( $folders as $folder) {107 $folder = trim( $folder);108 echo "<option value=\"{$folder}\">{$folder}</option>";109 } ?>111 <option value=""><?php _e('Default', __FILE__); ?></option> 112 <?php foreach ($folders as $folder) { 113 $folder = trim($folder); 114 echo "<option value=\"{$folder}\">{$folder}</option>"; 115 } ?> 110 116 </select> 111 117 <img onload=" 112 118 var match = document.cookie.match( new RegExp( '(^| )custom_upload_folder=([^;]+)' ) ); 113 119 document.getElementsByClassName('js-custom-upload-folder')[0].value = match ? match[2] : ''; 114 " 120 " 115 121 src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" /> 116 <?php } 122 <?php 123 } 117 124 } 118 125 -
custom-upload-folder/trunk/readme.txt
r2320834 r2780533 4 4 Tags: media, upload, assets 5 5 Requires at least: 4.6 6 Tested up to: 5.47 Stable tag: 1. 06 Tested up to: 6.0.2 7 Stable tag: 1.1 8 8 Requires PHP: 5.3 9 9 License: GPLv2 or later … … 29 29 == Changelog == 30 30 31 = 1.1 = 32 * WordPress 6.x support. 33 31 34 = 1.0 = 32 35 * Add pre-select dropdown option.
Note: See TracChangeset
for help on using the changeset viewer.