我可以用类似的技巧用另一个div“包装”我的所有东西吗?
绝对地几乎一切皆有可能。但你必须做一些有点粗俗的事。
这个the_content
过滤器实际上不会过滤整个页面的内容。这种特殊的过滤器在整个WordPress中被用来过滤各种不同的内容。
不幸的是,没有一种好方法可以过滤整个页面。
实现这一点的一种方法是使用ob_start()
和ob_get_clean()
连接到适当的挂钩上。在将任何内容输出到页面之前,我们需要挂接并启动输出缓冲区。然后,我们需要在最后一个可能的时刻,抓住缓冲区。
然后我们可以对内容做些什么。你的正则表达式很接近,但不完全正确。
在您的功能中。php,添加以下内容:
//* Hook into WordPress immediately before it starts output
add_action( \'wp_head\', \'wpse_wp\', -1 );
function wpse_wp() {
//* Start out buffering
ob_start();
//* Add action to get the buffer on shutdown
add_action( \'shutdown\', \'wpse_shutdown\', -1 );
}
function wpse_shutdown() {
//* Get the output buffer
$content = ob_get_clean();
//* Do something useful with the buffer
//* Use preg_replace to add a <section> wrapper inside the <body> tag
$pattern = "/<body(.*?)>(.*?)<\\/body>/is";
$replacement = \'<body$1><section class="new-master">$2</section></body>\';
//* Print the content to the screen
print( preg_replace( $pattern, $replacement, $content ) );
}
我是否应该使用类似的技巧,用另一个div“包装”我的所有东西?
视情况而定。更好、更快的方法是编辑模板文件。既然您声明您没有访问模板文件的权限,那么我相信这样的东西将是您唯一的选择。