如果可以更改模板,这可能是非正统的/不必要的,但在某些情况下可能是必要的。我意识到这是一篇很老的帖子,但我只是偶然发现了它,并意识到我实际上经常使用输出缓冲区。在下面的示例中,我正在删除
您可以使用string replace或preg replace进行更高级的替换,如下面的示例所示。我也用过!此处是\\u admin,但您可以使用高级条件来针对某些页面进行替换。
if (!is_admin()) {
function link_rel_buffer_callback($buffer) {
$buffer = preg_replace(\'/(<link *?.*?\\brel\\b=["|\\\']\\bpingback\\b["|\\\'].*?\\bhref\\b(=["|\\\'](.*?)["|\\\'])*(.*?)(\\/?>)(?=\\s*?<))|(<link *?.*?\\bhref\\b(=["|\\\'](.*?)["|\\\'])*.*?\\brel\\b=["|\\\']\\bpingback\\b["|\\\'](.*?)(\\/?>)(?=\\s*?<))/\', \'\', $buffer);
return $buffer;
}
function link_rel_buffer_start() {
ob_start("link_rel_buffer_callback");
}
function link_rel_buffer_end() {
ob_flush();
}
add_action(\'template_redirect\', \'link_rel_buffer_start\', -1);
add_action(\'get_header\', \'link_rel_buffer_start\');
add_action(\'wp_footer\', \'link_rel_buffer_end\', 999);
}
仅使用
http://regex101.com/ 测试替换表达式。因此,从页面复制呈现的html并将其粘贴到textarea中,然后键入regex以过滤您想要更改的内容。
在上述示例中,您只需更改preg\\u replace输出:
$buffer = preg_replace(\'/original html goes here/\', \'replacement html goes here\', $buffer);
然后只需添加到is admin以设置不同的规则。此外,如果你不需要设定目标,只需使用这些操作即可。
add_action(\'wp_head\', \'link_rel_buffer_start\', 999);
add_action(\'wp_footer\', \'link_rel_buffer_end\', 999);