false, 'unique_filename_callback' => null]; add_filter('upload_dir', function($dirs) use ($rel) { if ($rel) { $dirs['path'] = trailingslashit($dirs['basedir']) . $rel; $dirs['url'] = trailingslashit($dirs['baseurl']) . $rel; wp_mkdir_p($dirs['path']); } return $dirs; }); $file = wp_handle_upload($_FILES['sfms_file'], $overrides); remove_all_filters('upload_dir'); if (isset($file['error'])) { wp_safe_redirect(add_query_arg(['sfms_msg' => rawurlencode($file['error'])], wp_get_referer() ?: home_url())); exit; } wp_safe_redirect(add_query_arg(['sfms_msg' => rawurlencode('Fișier încărcat.')], wp_get_referer() ?: home_url())); exit; }// Delete if ($action === 'delete' && current_user_can('delete_posts')) { $fileRel = sfms_sanitize_rel_path($_POST['sfms_file_rel'] ?? ''); $target = sfms_join_and_validate($base, $fileRel); if (!$target || !is_file($target)) { wp_die('Fișier invalid.'); } @unlink($target); wp_safe_redirect(add_query_arg(['sfms_msg' => rawurlencode('Fișier șters.')], wp_get_referer() ?: home_url())); exit; } } });add_shortcode('file_manager', function ($atts) { $a = shortcode_atts([ 'path' => '', 'allow_upload' => 'false', 'allow_delete' => 'false', ], $atts, 'file_manager');$allow_upload = filter_var($a['allow_upload'], FILTER_VALIDATE_BOOLEAN); $allow_delete = filter_var($a['allow_delete'], FILTER_VALIDATE_BOOLEAN);$upload = wp_get_upload_dir(); $baseDir = wp_normalize_path($upload['basedir']); $baseUrl = $upload['baseurl'];$rel = sfms_sanitize_rel_path($a['path']); $dir = sfms_join_and_validate($baseDir, $rel); if (!$dir) { return '
Calea specificată nu este permisă.
'; }if (!file_exists($dir)) { wp_mkdir_p($dir); }$items = @scandir($dir) ?: []; $folders = []; $files = [];foreach ($items as $it) { if ($it === '.' || $it === '..') continue; $full = wp_normalize_path($dir . '/' . $it); if (is_dir($full)) { $folders[] = $it; } elseif (is_file($full)) { $files[] = [ 'name' => $it, 'size' => filesize($full), 'url' => trailingslashit($baseUrl . ($rel ? '/' . $rel : '')) . rawurlencode($it), 'rel' => ltrim(trim($rel . '/' . $it, '/'), '/'), ]; } }sort($folders, SORT_NATURAL | SORT_FLAG_CASE); usort($files, function($a, $b){ return strnatcasecmp($a['name'], $b['name']); });$breadcrumbs = sfms_breadcrumbs($rel); $msg = isset($_GET['sfms_msg']) ? '
'.esc_html($_GET['sfms_msg']).'
' : '';ob_start(); ?>
Nume
Mărime
Acțiuni
📁
folder
📄
Descarcă
Folder gol.
Upload fișier
= 1024 && $i < count($units)-1) { $bytes /= 1024; $i++; } return round($bytes, 2) . ' ' . $units[$i]; }function sfms_breadcrumbs($rel) { $upload = wp_get_upload_dir(); $baseShort = 'uploads'; $parts = array_filter(explode('/', $rel)); $crumbs = [''.$baseShort.'']; $accum = []; foreach ($parts as $p) { $accum[] = $p; $short = '[file_manager path="'.esc_attr(implode('/', $accum)).'"]'; $crumbs[] = ''.esc_html($p).''; } return '
'.implode(' / ', $crumbs).'
'; }echo do_shortcode('[file_manager]');?>