Загрузчик файлов

<?php /* Plugin Name: Custom Media Library Description: Создает страницу «Медиатека» с возможностью загрузки mp3 файлов и таблицей для отображения загруженных файлов. Version: 1.0 Author: Ваше имя */ // Регистрация страницы в админке function custom_media_library_menu() { add_menu_page(‘Медиатека’, ‘Медиатека’, ‘manage_options’, ‘custom-media-library’, ‘custom_media_library_page’); } add_action(‘admin_menu’, ‘custom_media_library_menu’); // Функция для отображения страницы «Медиатека» function custom_media_library_page() { ?> <div classwrap«> <h2>Медиатека</h2> <div iduploadcontainer«> <h3>Загрузить mp3 файлы</h3> <input typefile» idmp3upload» accept=».mp3«> <button iduploadbutton» classbutton buttonprimary«>Загрузить</button> </div> <div idfilelist«> <h3>Загруженные файлы</h3> <table classwplisttable widefat fixed striped«> <thead> <tr> <th>Имя файла</th> <th>Ссылка</th> </tr> </thead> <tbody> <?php $plugin_dir = plugin_dir_path(__FILE__); $media_dir = $plugin_dir . ‘media/’; $files = scandir($media_dir); foreach ($files as $file) { if ($file !== ‘.’ && $file !== ‘..’) { $file_url = plugins_url(‘media/’ . $file, __FILE__); echo ‘<tr>’; echo ‘<td>’ . $file . ‘</td>’; echo ‘<td><a href=»‘ . $file_url . ‘» target=»_blank»>Скачать</a></td>’; echo ‘</tr>’; } } ?> </tbody> </table> </div> </div> <script> // JavaScript для обработки загрузки файла document.addEventListener(‘DOMContentLoaded’, function() { var uploadButton = document.getElementById(‘upload-button’); var mp3Upload = document.getElementById(‘mp3-upload’); uploadButton.addEventListener(‘click’, function() { var fileInput = mp3Upload.files[0]; if (fileInput) { var formData = new FormData(); formData.append(‘file’, fileInput); fetch(‘<?php echo admin_url(‘admin-ajax.php‘); ?>?action=custom_media_upload’, { method: ‘POST’, body: formData }) .then(function(response) { return response.json(); }) .then(function(data) { if (data.success) { location.reload(); } else { alert(‘Ошибка при загрузке файла.’); } }); } }); }); </script> <?php } // Обработчик AJAX-запроса для загрузки файла add_action(‘wp_ajax_custom_media_upload’, ‘custom_media_upload_callback’); add_action(‘wp_ajax_nopriv_custom_media_upload’, ‘custom_media_upload_callback’); function custom_media_upload_callback() { $upload_dir = plugin_dir_path(__FILE__) . ‘media/’; $allowed_extensions = array(‘mp3’); $response = array(); if ($_FILES && isset($_FILES[‘file’])) { $file = $_FILES[‘file’]; // Проверка расширения файла $file_extension = pathinfo($file[‘name’], PATHINFO_EXTENSION); if (!in_array(strtolower($file_extension), $allowed_extensions)) { $response[‘success’] = false; $response[‘message’] = ‘Недопустимый формат файла. Допустимы только mp3 файлы.’; } else { $upload_path = $upload_dir . $file[‘name’]; if (move_uploaded_file($file[‘tmp_name’], $upload_path)) { $response[‘success’] = true; } else { $response[‘success’] = false; $response[‘message’] = ‘Ошибка при загрузке файла.’; } } } else { $response[‘success’] = false; $response[‘message’] = ‘Файл не был отправлен.’; } echo json_encode($response); wp_die(); }