http 헤더를 수정하기위한 WP 기능 / 필터?


17

HTTP 헤더를 추가 / 수정할 때 사용할 전용 WP 기능, 동작 또는 필터가 있습니까?

지금은 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

초기화 조치는 잘못된 위치입니다. 관리 공간이 아닌 사이트의 프런트 엔드보기에만 영향을 주도록 template_redirect가 더 좋습니다.


후크와 관련하여 좋은 점이 있지만 그 외에도 'raw'header () 함수 (오른쪽 후크 사용)를 올바른 방법으로 호출하거나 wp 래퍼가 있어야합니까? 헤더를 직접 호출하는 것은 필터를 사용하여 가능한 것처럼 (바디 클래스를 조작하려는 경우와 같이) 헤더를 추가하는 것만으로 헤더를 추가 할 수 없습니다.
mikkelbreum

1
header ()가 유일한 방법입니다. 그러나 기존 헤더를 추가하는 대신 바꿀 수있는 두 번째 매개 변수가 있습니다. php.net/manual/en/function.header.php
Otto

14

다음은 원래 질문과 Dominic P의 답변을 기반으로 사용한 코드입니다.

/*
 * 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');

해당 코드를 functions.php 파일에 추가 한 후에는 http://web-sniffer.net/ 에서 테스트를 실행 하여 HTTP 헤더가 실제로 변경되었는지 확인하여 작동하는지 확인할 수 있습니다 .


11

나는 그것이 오래되었다는 것을 알고 있지만, 다른 누군가가 이것에 걸려 넘어지면 HTTP 헤더를 수정하기위한 WordPress 후크를 발견했습니다. 후크는 wp 클래스wp_headers 에서 호출됩니다 .

전달 된 첫 번째 인수는 헤더 이름이 키인 헤더 배열입니다. 두 번째 인수는 wp 클래스 객체에 대한 참조입니다.


또 다른 후크가 있습니다 : send_headers. 후크 목록 에 "wp_headers"가 표시되지 않습니다 .
pixeline

흠, 흥미 롭습니다. 여기 에서 wp_headers 필터를 체크 아웃 하십시오.
Dominic P

"내부"훅 (예 : wp_headers)과 "public"훅 (예 : "send_headers")이 있다고 생각합니다. "내부"후크는 향후 릴리스에서 변경되기 쉽습니다. "공개"후크는 더 "안정적"인 것으로 간주됩니다. 그러나 나는 여기에 잘못되었을 수 있습니다. 나는 후크에 대한 다양한 연구에서 얻은이 느낌을 뒷받침 할 출처를 찾지 못했습니다.
pixeline

가능하지만이 경우 두 후크가 단순히 다른 기능을 수행하는 것처럼 보입니다. send_headers헤더를 보낸 후에 실행되는 액션이고 헤더를 보내기 wp_headers전에 적용되는 헤더에 대한 필터입니다.
Dominic P

음 ... send_headers코덱스 페이지 만 있다는 사실이 어느 것을 사용
해야하는지에 대한 정보라면

4

send_headerswp_headers이 상황 에서 권장되는 방법 은 코덱 에서 설명합니다 .

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

비슷한 질문에 대한 이유 는 다음과 같습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.