Intereting Posts
Поиск тегов A / proc в wp-содержимом? интеграция с загрузкой метаданных mp3 audio: могу ли я автопопуляцией заголовка, заголовка, описания из тегов id3? Не можем ли мы использовать строки, определенные как константы PHP, если мы хотим перевести их в плагин? Получить список лет, когда публикации были опубликованы Single_cat_title () печатает заголовок перед текстом Как я могу показать post_class () в контуре вывода? Как использовать командные строки, активировать тему в wp-cli, также настроить тему Vagrant / Sage? Уменьшение размера изображения только в RSS Как получить 1 или 2 конкретных сообщения в верхней части моего блога WordPress? «Ошибка при подключении к базе данных» при попытке запустить скрипт через crontab CNAME vs A Record for WWW – с 301 переадресацией get_template_part возвращает NULL Каков наилучший стек для непрерывного развертывания cPanel? Можно ли легко сделать эту навигацию в 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 будет доступен там, где вы можете проверить, разрешено ли пользователям выполнять определенные действия.