Intereting Posts
Просмотр фотоальбома без прокрутки вниз для каждого снимка Добавить миниатюру изображения с внешнего изображения с помощью плагина Помощь с настраиваемым шаблоном страницы – перечисление содержимого дочерних страниц? Сообщение дублируется с помощью цикла foreach Как использовать функцию add_query_arg в теге шаблона, таком как previous_post_link? Специальная страница Pagination большой вопрос Как показывать связанные записи по категориям или настраиваемым типам сообщений? Является ли `is_sidebar_active ()` устаревшим и показывает ошибку? У меня есть обычная таксономия, назначенная двум типам сообщений. Как создать URL-адреса для разных архивов терминов для каждого типа сообщений? Создайте цикл контуров содержимого и выдержки с пейджингом и параметры для # сообщений Создание списка Treeview в каталоге Срок действия RSS-ленты и Google Adsense Добавить пользовательские возможности до или после добавления пользовательской роли? Попытка получить авторскую почту для отправки электронной почты с страницы single.php в WordPress? Создание предварительного просмотра в виде изображения

Создание и загрузка файлов с помощью WP API

В последнее время мне было предложено внедрить функциональные возможности, которые позволят пользователям редактировать отдельные пользовательские сообщения, чтобы загрузить json-файл на основе мета этого сообщения. Наконец, мне удалось выполнить задачу (ну, по крайней мере, в некотором смысле, по крайней мере), но то, что сейчас касается меня, больше всего – безопасность моего решения.

Здесь идет код (это плагин с тремя файлами внутри его каталога):

functions.php

// Main plugin file. This is where I output button for custom post type edit page /*...*/ <button data-postid="<?php echo $post->ID; ?>" data-fileurl="<?php echo plugins_url('download_json.php',__FILE__); ?>" class="button-secondary" id="mycp-download-json" >Download JSON</button> /*...*/ 

script.js

 jQuery(document).ready(function(){ var $btn = jQuery('#mycp-download-json'); $btn.on('click', function(e){ e.preventDefault(); window.location = jQuery(this).data('fileurl') + '?postid=' + jQuery(this).data('postid'); }); }); 

download_json.php

 <?php require(dirname(dirname(dirname(__DIR__))) . '/wp-load.php'); $postid = (int)($_GET['postid']); header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename= file.json"); header("Content-Transfer-Encoding: binary"); $fields = get_post_meta($postid,'', true); echo json_encode($fields, JSON_HEX_APOS); 

И вот мои вопросы:

  • Будет ли простая проверка current_user_can() достаточной для предотвращения несанкционированной загрузки (например, путем ввода URL-адреса)?
  • В общем, действительно ли так реализовать такую ​​функцию генерации загрузки? Нужно ли создавать отдельный файл для обработки запроса на загрузку (download_json.php в этом случае)?
  • Существуют ли другие проблемы безопасности, возникающие, когда я включаю только wp-load (а не весь заголовок wp-blog)?

Solutions Collecting From Web of "Создание и загрузка файлов с помощью WP API"

Плагины, которые загружают среду WordPress таким образом, получают отказ от репозитория, поскольку они подвержены сбою в нестандартных конфигурациях.

Для чего-то подобного я использовал бы действие admin-post-$action для получения запросов. API WordPress будет доступен там, где вы можете проверить, разрешено ли пользователям выполнять определенные действия.