Intereting Posts
Заказывать сообщения в соответствии с определенным пользователем порядком для метазначений? владелец блога многопользовательский Архивирование разбиения на страницы, вызывающее 404 с постоянной позицией Доступ к сообщению мета в функции future_to_publish Изображения не будут отображаться после импорта из старого WordPress Сообщение для ввода сообщений в подкаталоге. Как я могу выполнить запрос на основе измененной даты? Как добавить кнопку «Читать дальше» в мой блог? Вставить wp_editor на интерфейс с AJAX? Создание темы WordPress на основе двадцати get_comment_author_link не работает должным образом Как отображать пользовательские типы сообщений через общую таксономию? Страница перенаправления пользовательской таксономии на страницу 404 Есть ли способ уведомлять конкретных пользователей, когда новые публикации публикуются на определенные страницы? Прикрепить файл Funcion для обычных людей

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

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

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

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

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

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

Собственно, моя рекомендация заключалась бы в том, чтобы делать что-то по-другому. Вы можете добавить настраиваемую конечную точку перезаписи в 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' ); }