WordPress 自定义路由 URL 和 显示模板

发布于 2019-03-09 字数 1745 浏览 767 评论 0

以往我们需要创建一个特殊页面,我们都是新建一个 Page 单页,然后在主题目录里面新建一个 Page 模板,这样按照 WordPress 的调用顺序就可以自定义展示方式,但是如果是开发插件,这样方式就不行了,所以我们得自定义路由 URL 和 显示模板才行。

首先 WordPress 有重写 URL 的方法,叫 add_rewrite_rule(),在 function.php 中加入如下代码段

add_action('init', 'theme_functionality_urls');
function theme_functionality_urls() {
  add_rewrite_rule('^test','index.php?test=1','top');
}

添加路由重写,每次修改完记得在 wp-admin 后台 设置 -> 固定链接 -> 保存 才能生效。

然后还要声明自定义的查询参数,不然无法获取参数的内容

add_action('query_vars', 'test_add_query_vars');
function test_add_query_vars($public_query_vars){
  $public_query_vars[] = 'test'; 
  return $public_query_vars;
}

所有非 WordPress 本身的查询参数,都需要使用上面的代码声明,不然 WordPress 会自动过滤掉。

最后是模板载入的规则,当检测到有我们自定义的参数的时候,就载入指定的模板

add_action("template_redirect", 'test_template_redirect');
function test_template_redirect(){
  global $wp;
  global $wp_query;
  $reditect_page =  $wp_query->query_vars['test'];
  if ($reditect_page == "1"){
    include(TEMPLATEPATH.'/test/test.php');
    die();   
  }
}

这个 TEMPLATEPATH 是你的主题路径,连着 /test/test.php 相当于在你的主题目录下新建了一个 test 目录,test 目录里有一个 test.php 文件,当我们访问 domain/test 的时候,相当于在访问 domain?test=1 这个 URL,并且会把我们自定义的 template 展示出来。

如果你对这篇文章有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助。

扫码二维码加入Web技术交流群

您暂时不能评论!

管理员开启了需要登录才能够评论,你可以免费注册一个本站的账号。

还没有评论!

目前还没有任何评论,快来抢沙发吧!