WordPress最终输出过滤器的缓存问题

时间:2019-04-05 23:01:09

标签: php wordpress

我在https://stackoverflow.com/a/22818089/3465265

处使用缓冲方法来获得kfriend推荐的最终html输出

它工作正常,但缓存插件存在问题。 Arne L在这里为WP超级缓存推荐了一个过滤器:https://stackoverflow.com/a/51171913/3465265

但这不起作用。当我使用wp_cache_ob_callback_filter作为过滤器名称时,根本没有任何更改。没有超级缓存文件生成。

WP火箭队也有类似的过滤器,称为rocket_buffer https://docs.wp-rocket.me/article/774-rocketbuffer

应用该过滤器名称修复可最小化问题。 WP Rocket可以正确压缩HTML和CSS,但在/ 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标签,除了缓存插件中提到的问题之外,该关键字都可以正常工作。

请提供任何解决方案。

谢谢

0 个答案:

没有答案