获取整个页面内容(在浏览器中生成的HTML)

时间:2012-02-06 作者:Mario Peshev

我正在寻找一个过滤器,提供在WordPress中生成的完整页面,包括带有元标记、正文、样式和动态内容的标题部分。\\u content()和\\u extract()只对动态部分起作用,而请求过滤器似乎只对SQL查询起作用(或者不起作用)?

我想在整个页面的所有链接或按钮中过滤一些数据。我该怎么做?

3 个回复
SO网友:Brian Fegter

您可以使用output buffering 为了实现这一点。

直接在渲染模板之前添加高优先级挂钩:

add_action(\'template_redirect\', \'foo_buffer_go\', 0);
function foo_buffer_go(){
    ob_start(\'foo_buffer_callback\');
}
添加优先级极低的关机挂钩。

add_action(\'shutdown\', \'foo_buffer_stop\', 1000);
function foo_buffer_stop(){
    ob_end_flush();
}
在回调中,您可以操作呈现的HTML。

function foo_buffer_callback($buffer){
  //Do something with the buffer (HTML)
  return $buffer;
}
您可以在此处下载此插件:http://3-3.me/B9lK

启用插件访问站点,它将呈现为“Foo Bar”,这意味着您正在捕获生成的HTML的全部内容

SO网友:Walf

对@BrianFegger的代码进行轻微更改,使输出缓冲区仅在打开时关闭。这样做的好处是能够有条件地决定是否过滤。

if ($want_to_modify_content) {
    add_action(\'template_redirect\', \'YOURPLUGIN_buffer_start\', 0);
}
function YOURPLUGIN_buffer_start() {
    add_action(\'shutdown\', \'YOURPLUGIN_buffer_stop\', PHP_INT_MAX);
    ob_start(\'YOURPLUGIN_modify_content\'); 
}
function YOURPLUGIN_buffer_stop() {
    ob_end_flush();
}
function YOURPLUGIN_modify_content($content) {
    //modify $content
    return $content;
}

SO网友:Anh Tran

您可以使用HTTP API 获取post URL.

结束