Убираем мусор из HEAD в WordPress.

Я уже писал о том, как удалить «последствия» работы WordPress-плагина «Yoast WordPress SEO» из HTML кода страницы. Большой минус этого метода в том, что нужно лезть в исходный код плагина каждый раз при его обновлении.
И вот, когда этот самый Yoast WordPress SEO в очередной раз обновился, меня совсем заломало лезть править исходники, и был придуман несколько иной способ.

Новый метод заключается в том, что мы в файле шаблона темы будем удалять все комментарии из HEAD-части страницы. Так как ЙОАСТ плагин показывает свой мусор именно в комментариях, то мы в итоге приберём и за ним.
Итак. Открываем файл functions.php текущей темы, и дописываем в конец файла:

add_action('get_header', 'before_header', 0);
add_action('wp_head', 'after_header', 900);
function before_header (){
    ob_start();
}
function after_header() {
    $cont = ob_get_contents();
ob_end_clean();
            echo preg_replace('#[\n\r\s]*<!--.*?-->[\n\r\s]*#', "", $cont);
}

Здесь мы перехватываем весь вывод секции HEAD в буфер. Затем ищем там однострочные комментарии <!— —>, удаляем их и выводим очищенный HEAD.
Правда, этот костылеобразный способ работает не везде. Для его работы нужно, чтобы в php.ini было выставлено output_buffering = off. Кроме того, многие плагины похожим образом буферизуют вывод, и могут повлиять на наш код. Плюс, данный код благополучно скушает условные комментарии для IE, вида «<!—[if условие]> невидимый HTML-код <![endif]—>». За этим нужно следить тоже.

7 комментариев к "Убираем мусор из HEAD в WordPress."