#php #wordpress
#php #wordpress
Вопрос:
Я создаю прототип плагина WP, используя шаблон плагина.Мне очень сложно создавать документы и переопределять панель администратора в WP IOT, создавать PDF-файлы / электронные таблицы и т. Д. Я уверен, что есть трюк, которого я не знаю.
Если для этого есть наилучшая практика, я хотел бы знать, поскольку традиционные подходы, которые я бы использовал (с другими фреймворками), похоже, не работают.
Сейчас я создаю страницу меню со страницей подменю. Страница подменю содержит ссылки для создания различных отчетов. После прочтения Кодекса предлагается добавить страницу меню подстраницы с родительским значением slug как null (поэтому он не указан, но доступен).
Код выглядит следующим образом:
$this->plugin_screen_hook_suffix = add_submenu_page(
null,
__( 'Session', $this->plugin_slug. '-reports' ),
__( 'Session Report', $this->plugin_slug. '-reports' ),
'manage_options',
$this->plugin_slug . '-report-session',
array( $this, 'display_plugin_session_report_page' )
);
public function display_plugin_session_report_page() {
header('Content-Description: File Transfer');
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename=report.csv;');
header('Pragma: no-cache');
header('Expires: 0');
//push out csv...
}
Единственный способ, которым я работал с WP, — это ссылка на внешнюю страницу, например report.php , и вызов метода внутри него. Есть ли другой способ?
Ответ №1:
Вот решение, с которым я пошел, которое позволяет избежать настройки отдельной страницы скрипта:
В URL я добавляю следующее: amp;noheader=true
, затем при вызове функции я очищаю выходной буфер с помощью ob_clean и генерирую свои собственные заголовки. Я не смог найти никакой надежной документации по настройке noheader, но обнаружил, что она применима только в admin.php звонки.
Я надеюсь, что это поможет другим разработчикам!