Убираем мусор из 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."

  1. Не работает уже этот и старый способ( вместе с комментариями убирает и

    • Регулярка, которая кушает все html-комментарии, и оставляет условные комментарии для IE? Возможно кому-то и поможет, да 🙂

  2. Спасибо, чётко сработало. А то этот плагин утомил уже сильно со своими ссылками.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.