Intereting Posts
Настройка Tinymce для включения ссылок nofollow WordPress, удаляющий атрибуты данных для запланированного сообщения открытие ссылок в новой вкладке с помощью – add_filter ('the_content', 'make_clickable'); Как вызвать страницы с панели параметров Как работает mediaelement.js в WordPress? Как заставить WP_Query 'post__in' принимать массив? Как я могу получить данные из базы данных, когда я получаю сообщение id от url в wordpress Условная переадресация при входе в систему с использованием ссылочного URL Как использовать fetch_feed () для загрузки большого количества сообщений? Фильтрация настраиваемого типа сообщений в комбинации пользовательских таксономий и настраиваемых полей? Что может заставить фильтр gettext не работать для заданного текстового домена? RW Meta Box, сообщение об ошибке Пользовательские постоянные ссылки с CPT и иерархическими таксономиями Свойства wpquery last_query и last_result: должны ли они быть общедоступными или частными? Выбор страниц по категориям

ouput buffering меня смущает!

Я закодировал плагин, который работает с внешним ReST API. В JSON можно получить набор сообщений для отображения списка сообщений в HTML. Теперь я хочу расширить его, чтобы предоставить ссылки для загрузки связанных документов (в большинстве случаев pdf-файлов). Так много для теории.

Для другой PHP CMS я закодировал прокси-класс. Этот класс запрашивает API и получает двоичный контент документов. Я использую ob_clean() чтобы очистить выходной буфер. Я установил новый заголовок для Content-Disposition: attachment; filename=... Content-Disposition: attachment; filename=... , Content-Type и т. д. Чтобы получить документ, я использую завиток. Он работает нормально. Но не в WordPress:

 Cannot modify header information - headers already sent by (output started at /Users/sebastian/php_workspace/wordpress/wp-includes/admin-bar.php:792) in /Users/sebastian/php_workspace/wordpress/wp-content/plugins/bibsonomy-csl/lib/bibsonomy/CurlHttpRequestProxy.php on line 68 

Я пробовал разные способы удаления выходного буфера без каких-либо успехов. Я пытался:

 while ( ob_get_level() ) { ob_end_clean(); } 

Также я попытался использовать header_remove() PHP. Ничего не работает.

Как удалить буфер вывода в WordPress?

the_content() , выход которого вы фильтруете, является тегом шаблона. Он предназначен для использования как часть HTML-страницы. Одной загрузки страницы не может одновременно быть HTML-страница и загрузка PDF.

Загрузка файла, которую вы генерируете, должна произойти до того, как будет загружен HTML-шаблон, например, на hook_retirect и exit после этого, так что выполнение не будет обрабатывать вывод HTML (или оно будет заполнено внутри вашего файла PDF, что, вероятно, нарушит его).