17713433920 info@mac163.com

emplate_redirect 是非常常用的一个 WordPress 接口,当然运行的时候,WordPress 已经运行了主循环,所有的对象都已经被实例化了,但是还没有把结果输出到浏览器。这是最后一个 hook 可以将用户导向其他的地方了,当然也是需要所有查询对象都实例化之后重定向的最好地方。但是这个 hook 最好不要用于加载一个其他模板文件。 下面是一些我们常见到的代码:

add_action( 'template_redirect', 'my_callback' );

function my_callback() {
  if ( some_condition() ) {
    include( SOME_PATH . '/some-custom-file.php' );
    exit();
  }
}

这样的用法的最大问题是,其他在这之后使用 template_redirect Hook 的代码将不会运行。这样会导致站点被出租哦或者导致一些非常奇怪的 bug,如果你要加载一个其他模板,建议你使用这个 filter Hook:template_include。

add_filter( 'template_include', 'my_callback' );

function my_callback( $original_template ) {
  if ( some_condition() ) {
    return SOME_PATH . '/some-custom-file.php';
  } else {
    return $original_template;
  }
}

同样的效果,但是不会影响其他插件或者主题的代码,他们的区别应该很容易区分: template_redirect 用于 redirects(重定向)。 template_include 用于 includes(加载)。


微信二维码

微信扫描二维码联系我们!
我们在微信上24小时期待你的声音
提供外贸路由器设备产品,轻松翻墙,解答:WP主题推荐,WP网站建设,Google SEO,百度SEO,专业服务器环境搭建等!


需要提供WordPress主题/插件的汉化服务可以随时联系我们!另外成品WordPress网站以及半成品WordPress网站建设,海外Google SEO优化托管服务,百度SEO优化托管服务,Centos/Debian服务器WP专用环境搭建,WP缓存服务器搭建,我们都是你的首选,拥有多年WP开源程序服务经验,我们一直在坚持客户体验,没有最好,只有更好!
回到顶部