之前介绍过修改 WordPress 默认模板行为的方法《WordPress钩子:template_include 为WordPress模板树添加新节点》。WordPress中还有一个方法与之相类似,就是 template_redirect 。
template_redirect 在WordPress决定加载哪个模板页面之前执行。如果您需要在完全了解所查询内容的情况下进行重定向,那么可以使用它。
do_action( 'template_redirect' );
与 include_template 不同的是,template_redirect 是 Action,而 include_template 是 Fliter。Action 和 Fliter 的区别,可以参考文章《三分钟热度教程:WordPress插件开发之Action和Filter都叫钩子》和 《WordPress 中的 action 和 filter 有什么区别》。
注意:
加载一个不同的模板并不能很好地使用这个动作挂钩。如果包含另一个模板,然后使用 exit 或 die,则不会运行后续的 template_redirect 挂钩,这可能会破坏站点的功能。相反,使用template_include筛选器钩子返回要使用的新模板的路径。这将允许在不干扰WordPress加载过程的情况下使用替代模板。
也就是说 template_redirect 要配合使用 wp_redirect ,而 template_include 应该与 include 配合。
如果,非要在 template_redirect 中 include,在 template_include 中 wp_redirect ,也许会有一些功能不正常……
使用举例:
function custom_redirects() {
if ( is_front_page() ) {
wp_redirect( home_url( '/dashboard/' ) );
die;
}
if ( is_page('contact') ) {
wp_redirect( home_url( '/new-contact/' ) );
die;
}
}
add_action( 'template_redirect', 'custom_redirects' );
-
WordPress 用户评论审核通过,发个通知给用户如何通知用户评论审核通过了
-
WordPress钩子:after_setup_theme 简介after_setup_theme 是为主题添加特性的好地方
-
WordPress钩子:switch_theme 与 after_switch_theme 简介只在启用主题时,执行一次的钩子
-
WordPress钩子:default_content 给文章编辑器设置默认内容如何给 WordPress 编辑器设置默认内容
-
WordPress钩子:template_include 为WordPress模板树添加新节点突破 WordPress 文章功能的局限
-
WordPress钩子:wp_head 向头部添加代码WordPress中的头部信息
暂无评论,抢个沙发...