WP Rocket — один із найпопулярніших плагінів кешування для WordPress, який має багатий функціонал і широкі можливості.
WP Rocket може об’єднувати та стискати JavaScript і CSS, формуючи для кожного окремий файл. При цьому Rocket «збирає» весь inline JS/CSS з HTML-коду сайту та також додає його до загальних кешованих файлів. Це, звичайно, зручно, але в деяких випадках, особливо при спільній роботі з іншими плагінами, можуть виникати помилки або некоректна робота.
Завдання, описане в заголовку цієї статті, може здатися доволі дивним. Навіщо кешувати оголошення? Чому їх не можна просто залишити як є й виводити у потрібних блоках? І так, це було б логічно! Але що, якщо ви вирішите використовувати кешування разом із плагіном Flat PM?
Flat PM — плагін для реклами. Менеджер реклами, який дозволяє зручно керувати всією рекламою на сайті з використанням різних умов для її показу.
І ось якраз WP Rocket з Flat PM «дружити» не хоче. Припускаю, що до певного моменту все працювало нормально, допоки розробники Flat PM не вирішили перенести логіку вставки рекламних блоків з регулярних виразів у HTML (точно не перевіряв) на JS і DOM. Це спричинило проблеми з кешуванням Google Ads — у результаті оголошення не відображалися на сайті.
На щастя, все вирішується досить просто. Для цього можна або заглянути в код плагіна WP Rocket, або звернутися в техпідтримку. Другий варіант значно простіший, бо файлів у Rocket чимало, а команда підтримки завжди відгукується й допомагає 🙂
Плагін WP Rocket розширюється через набір фільтрів і хуків, які дозволяють змінювати логіку формування кешу. У нашому випадку ми будемо використовувати фільтр rocket_excluded_inline_js_content, який приймає масив ключів — дані з такими ключами не потрапляють до кешованого JS-файлу.
add_filter('rocket_excluded_inline_js_content', function($excluded_inline) {
if(($delete_key = array_search('adsbygoogle', $excluded_inline)) !== false)
{
unset($excluded_inline[$delete_key]);
}
return $excluded_inline;
}, 10, 1);У коді вище серед значень масиву ми шукаємо adsbygoogle. Цей «ключ» відповідає за ігнорування inline JS-коду оголошень AdSense у HTML. Знайшовши такий ключ у масиві $excluded_inline, ми видаляємо його та повертаємо оновлений масив. Відтепер WP Rocket більше не буде ігнорувати ці оголошення й буде кешувати їх як звичайний JS-код.
Тепер Flat PM буде коректно відображати оголошення Google.
