Функція / фільтр WP для зміни заголовків http?


17

Чи є спеціальна функція, дія чи фільтр WP, який слід використовувати при додаванні / зміні заголовків HTTP?

На даний момент я просто підключити заголовок PHP () в дзвінок WP 'init' таким чином:

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

Але це правильний спосіб зробити це?

Відповіді:


9

Дія init - неправильне місце для цього. Краще було б в template_redirect, щоб ви впливали лише на вигляд спереду сайту, а не на області адміністратора.


Хороший момент щодо гака, але крім цього, це правильний виклик функції "raw" header () (за допомогою правого гака), чи є WP обгортка, яку слід використовувати для цього? Виклик заголовка безпосередньо дозволяє лише додавати до заголовків, не змінювати їх, як це було б можливо з фільтром (наприклад, коли ви хочете маніпулювати класом тіла)
mikkelbreum

1
header () - єдиний спосіб. Однак у нього є другий параметр, який дозволить замінити існуючі заголовки, а не додавати їх. Дивіться php.net/manual/en/function.header.php
Отто

14

Ось код, який я використав, заснований на оригінальному запитанні та на відповіді Домініка Р ...

/*
 * Modify HTTP header
 */
function add_header_xua($headers) {

    // var_dump($headers); #=> if you want to see the current headers...  

    if (!is_admin()) {
        $headers['X-UA-Compatible'] = 'IE=edge,chrome=1';    
    }

    return $headers;     
}
add_filter('wp_headers', 'add_header_xua');

Після того, як ви додали цей код у свій файл function.php, ви можете перевірити, чи він працює, запустивши тест на веб- сайті http://web-sniffer.net/, щоб переконатися, що заголовки HTTP дійсно змінилися.


11

Я знаю, що минув час, але якщо хтось інший натикається на це, я знайшов гачок WordPress спеціально для зміни HTTP заголовків. Гак є wp_headersі його називають у класі wp .

Перший переданий аргумент - це масив заголовків із назвою заголовка як ключа. Другий аргумент - це посилання на об’єкт класу wp.


Існує ще один гак: send_headers. У списку гаків я не бачу жодних "wp_headers" .
пікселін

Хм, це цікаво. Тут ви можете перевірити фільтр wp_headers .
Домінік П

Я думаю (але не впевнений), що є "внутрішні" гачки (наприклад, wp_headers) і "загальнодоступні" гачки (наприклад, "send_headers"). "внутрішні" гачки більш схильні до зміни в майбутніх випусках. "громадські" гачки вважаються більш "стійкими". Але я, можливо, тут помиляюся, я не знаходжу жодного джерела, яке б підкріплювало це відчуття, отримане в результаті різних досліджень, які я робив на гачках.
пікселін

Це дуже можливо, але в цьому випадку схоже, що два гачки просто виконують різні функції. send_headersце дія, яка запускається після надсилання заголовків у той час wp_headers, як фільтр на заголовках, який застосовується до їх надсилання.
Домінік П

добре ... якщо факт, що send_headersмає лише сторінку кодексу, є будь-якою ознакою, яку використовувати ...
drzaus

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.