Intereting Posts
Получите JSON от собственного сайта WordPress Ajax-вызов из WP-страницы администратора OFTEN возвращает 0, но не всегда Лучший способ программно удалить категорию / термин из сообщения Как оптимизировать производительность без переходных процессов? Порядок сортировки запросов Wp Загрузка шаблонов отдельно в Настройщике Как реализовать администратор Ajax внутри администратора WP_List_Table? Изменение стандартного почтового формата metabox динамическая загрузка окна комментариев и редактирование Как загрузить SVG-изображения с помощью медиа-загрузчика? Два разных домена для двух разных языков Использование www вместе с не-www для основного домена в многоузловой установке При установке автоматически создайте страницу и установите ее как главную страницу Добавить сообщение Thumbnail на RSS-канал с нестандартным размером некоторые продукты бесплатно, а некоторые товары не бесплатны для доставки

Использование ООП внутри плагина – разрешено?

У меня есть предварительно написанные объекты, которые делают такие вещи, как файл, проверяющий тип MIME, а затем основной объект загрузки, но ни один из которых не использует базу данных. Поэтому мне просто интересно, смогу ли я объединить эти Obejcts внутри WordPress Plugin.

defined( 'ABSPATH' ) or die( 'No script kiddies please!' ); add_action('admin_menu', 'file_upload_menu'); function file_upload_menu() { add_options_page('E4K File Uploader', 'E4k File Uploader', 'manage_options', 'e4k-File-Uploader', 'file_upload_options'); } function file_upload_options() { class Example { public function canI(){ echo 'is this allowed?'; } } (new Example)->canI(); } 

Что-то вроде этого возможно? Я не разработчик WordPress, я просто прихожу из фона PHP, разрабатывающего CMS и API. Это ново для меня, но меня просили, поэтому мне просто интересно ограничить ООП в WordPress и / или его плагинах.

Фактический код (класс):

 class FileSecure { public $Allowed; private $Info; public function __construct($allow) { $this->Allowed = $allow; $this->Info = new finfo(); } public function upload($file, $dir) { $target = $dir . basename($file["name"]); (self::Check($file))? move_uploaded_file($file['tmp_name'], $target) : ""; } public function Check($file) { if (in_array($fileType = $this->Info->file($file, FILEINFO_MIME_TYPE, $this->Allowed))) { return true; } else { return false; } } } $fileCheck = array( 'Image' => new FileSecure( ['image/bmp', 'image/gif', 'image/jpeg', 'image/png'] ), 'Text' => new FileSecure( ['text/plain'] ), 'Compressed' => new FileSecure( ['application/zip', 'application/x-rar-compressed'] ) ); 

Фактический код (вспомогательная функция):

 function file_upload_options() { if (!current_user_can('manage_options')) { wp_die(__('You do not have sufficient permissions to access this page.')); } if (isset($_FILES['Picture'])) { require_once 'e4k-file-upload-class.php'; if($fileCheck['Image']->upload($_FILES['Picture'], 'Uploads/')): echo '<script>alert("Successfully uploaded");</script>'; endif; } echo '<form enctype="multipart/form-data" method="POST">'; echo '<input type="hidden" name="MAX_FILE_SIZE" value="30000" />'; echo 'Select a file to upload: <input name="Picture" type="file" />'; echo '<input type="submit" value="Upload File" />'; echo '</form>'; echo '<br /> <br />'; echo 'Current Libary: <br /> <br />'; foreach(uploaded_files_iterate('Upload/') as $file) { (is_string($file))? $file : '<a href="'.Get_template_directory_uri().'/Uploads/'.$file['name'].'">'.$file['name'].'</a> <br />'; } } 

зависит, хотите ли вы писать ООП или просто использовать классы PHP;)

система перехвата WordPress является процедурной по своему характеру и используется большое количество глобалов, поэтому для ее перевода в фактический ООП требуется некоторое умственное усилие. Большинство (99,9%) людей, пытающихся это сделать, терпят неудачу и производят что-то, что в основном процедурный код, завернутый в класс.

TL; Dr Вы можете использовать все, что позволяет вам язык. Обратные вызовы обычно являются точкой, где люди терпят неудачу, особенно когда вам нужно иметь возможность удалить их с крючка