Я использую метод буфера для окончательного вывода html, рекомендованный kfriend здесь https://stackoverflow.com/a/22818089/3465265
Он работает нормально, но есть проблемы с плагинами кэша.Арне Л рекомендовал фильтр для WP Super Cache здесь: https://stackoverflow.com/a/51171913/3465265
Но это не работает.Когда я использую wp_cache_ob_callback_filter
в качестве имени фильтра, никаких изменений не происходит.Файлы супер кеша не создаются.
WP Rocket также имеет аналогичный фильтр, который называется rocket_buffer
https://docs.wp -rocket.me / article / 774-rocketbuffer
.исправление имени фильтра.HTML и CSS оба должным образом минимизированы WP Rocket, но в каталоге / cache / wp-rocket не создаются html-файлы.
Вот мой код:
ob_start();
add_action('shutdown', function() {
$final = '';
// We'll need to get the number of ob levels we're in, so that we can iterate over each, collecting
// that buffer's output into the final output.
$levels = ob_get_level();
for ($i = 0; $i < $levels; $i++) {
$final .= ob_get_clean();
}
// Apply any filters to the final output
echo apply_filters('rocket_buffer', $final);
}, 0);
add_filter('rocket_buffer', function($output) {
//this is where changes should be made
$pattern1 ='~(<img.*? alt=")("[^>]*>)~i'; // alt empty
$alt_keyword = "BUBBLE";
$replace_fkw = '$1'. $alt_keyword .'$2';
return $content = preg_replace($pattern1, $replace_fkw, $output);
});
Предполагается, что он заменит imgпустой тег alt с данным ключевым словом, который работает нормально, за исключением проблемы, упомянутой с плагинами кэша.
Любое решение, пожалуйста.
Спасибо