挂钩到WordPress模板的呈现

时间:2012-09-30 作者:gearsdigital

我必须使用WordPress作为一些元模板系统,并包括一些JSP 静态呈现页面后,稍后将使用Tomcat对其进行评估。但很自然JSP php解析器无法解释代码。这将导致纯文本字符串与解释的模板部分混合。

Is there any way to hook into the (pre) rendering of a WordPress Template?

我需要访问渲染模板的方法,这样我就可以去掉JSP-标签。可能被包裹在一些独特的标签或其他东西之间。但这不是这个问题的一部分。

示例

<?php get_header(); ?>

<render:jsp>
    <%= request.getParameter("title") %>
</render:jsp>

<?php get_footer(); ?>

1 个回复
最合适的回答,由SO网友:onetrickpony 整理而成

可以,但WP并不能提供一种很好的方式,所以必须使用输出缓冲。

类似于:

// before template is included
add_action(\'template_redirect\', function(){

  // you can do some checks here
  // perhaps you need this only a certain page?
  if(!is_home())
    return;

  // capture output from here on...
  ob_start(function($html){

    // this function runs after the capture ends,
    // you can replace your tags here 
    $html = strtr($html, array(
      \'<render:jsp>\'  => \'<!--\',
      \'</render:jsp>\' => \'-->\',
    ));

    return $html;

  });

});
在脚本完成执行之前,PHP会自动将缓冲区的内容发送到输出。

结束