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