Intereting Posts
Отображение динамического уведомления администратора Перевод плагина не отображается Multisite – создание нового сайта с предварительно обработанными страницами, меню и т. Д. Показать последнее сообщение от некоторых авторов Можно ли разделить меню WordPress на разные div? Login_form добавить в начало формы, а не снизу Как я могу сравнить и удалить хаки для ядра? Опубликовать выдержку в пользовательском мета-окне … помочь с правильным php-форматом Добавление прямой ссылки на редактор сообщений в меню администратора Изменение размера шрифта по умолчанию и удаление нежелательных размеров шрифта в TinyMCE Advance Plugin Изменить диапазон рейтинга в Link Manager Может ли Shopp или WP электронная торговля создавать что-то столь же обширное, как эти сайты? Другие рекомендуемые решения? Получить название категории привязки Комментарий Авторы публикации на первой странице Пользовательский тип сообщения: условия связи, чтобы показать счет

Крючок для запроса URL-адреса

Я хотел бы сделать файлы XML загружаемыми, вместо того чтобы позволить браузеру отображать их в строке.

Я знаю, что могу использовать заголовок Content-Disposition: attachment HTTP (конечно же, лучшие решения приветствуются!). Я хочу добавить этот заголовок во все ответы HTTP, когда пользователь пытается загрузить XML-файл.

Я могу использовать следующий код PHP:

 header('Content-Disposition: attachment; filename="the_filename.xml"'); 

Проблема в том, когда я могу назвать эту инструкцию? Какой крюк я должен использовать и как?

Solutions Collecting From Web of "Крючок для запроса URL-адреса"

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

Например, URL http://site.com/download-xml/the_filename автоматически загрузит указанный файл в качестве вложения.

Во-первых, вам нужно добавить настраиваемую конечную точку перезаписи, чтобы установить это:

 function add_endpoint() { add_rewrite_endpoint( 'download-xml', EP_ALL ); } add_action( 'init', 'add_endpoint' ); 

Это удобно также добавляет переменную запроса, поэтому мы можем проверить, используется ли эта конечная точка во время перенаправления стандартного шаблона.

 function download_redirect() { global $wp_query; // If this isn't the right kind of request, bail. if ( ! isset( $wp_query->query_vars['download-xml'] ) || empty( $wp_query->query_vars['download-xml'] ) ) return; // Download the file. exit(); } add_action( 'template_redirect', 'download_redirect' ); 

В приведенной выше функции вы можете делать все необходимое для загрузки файла. Загрузите его из каталога /wp-content/uploads в виде потока, установите заголовки файлов (с настройкой содержимого на «вложение»), динамически создавайте контент на основе чего-либо в базе данных, что бы вы ни хотели.

Просто убедитесь, что у вас есть вызов exit() в конце, иначе WordPress попытается выполнить регулярные вызовы перенаправления шаблона, и вы получите некоторые уродливые «заголовки уже отправленных» ошибок позже по дороге.

Вам нужно будет взглянуть на Plugin API / Action Reference / send headers

Пример:

 add_action( 'send_headers', 'add_header_xua' ); function add_header_xua() { header( 'X-UA-Compatible: IE=edge,chrome=1' ); }