WordPress用插件替换页面

时间:2018-03-27 11:07:22

标签: php wordpress

我正在尝试创建一个插件,当URL中存在参数时,该插件将显示自定义页面。例如,我们假设帖子的网址为localhost/wp/2018/03/22/postname/,它会按预期正常显示帖子。我想要实现的是,当我将URL指定为localhost/wp/2018/03/22/postname/?param=1时,我想显示我将使用插件生成的页面。我创建了一个在参数存在时起作用的函数,它回应了一些示例内容,但它与WordPress正常显示的内容合并。因此,当我将参数放入URL时,我得到一个带有帖子的常规页面,我的内容位于中间的某个位置。我想只显示我从头开始生成的页面,从我的插件<html></html>。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

WordPress中有一个名为template_include的过滤器,在WordPress生成的页面上显示任何输出之前执行此过滤器。

只要在URL中找到参数和值,就可以通过此过滤器覆盖当前模板。例如。下面是我在项目中使用的过滤器,以覆盖存档和放大某个CPT的单个模板:

function em_templates($template) {
  if(get_query_var('post_type')  == 'xyz'  ) {

          return FMM__DIR__ . '/templates/archive-xyz.php';
   }

    return $template;
}


add_filter('template_include', 'em_templates', 1, 1);

您可以对参数采用此逻辑,并使用此WordPress过滤器来接管模板过程并显示您自己的模板过程。