我将使用一个连接到template_redirect
行动,因为
这个动作挂钩在WordPress确定要加载哪个模板页面之前执行。如果您需要在完全了解所查询内容的情况下执行aredirect,那么这是一个很好的挂钩。
资料来源:https://developer.wordpress.org/reference/hooks/template_redirect/
在自定义函数中,您可以首先检查当前查询的结果是否为;“未找到”;使用if
声明反对is_404()
. 如果没有,就早点回来,否则就继续走。然后深入研究全局变量$wp
获取请求的路径。
将路径用于get_term_by()
查找具有相同段塞的类别。如果找到,get_term_link()
, 和wp_redirect()
不忘exit;
. 否则,让WP继续执行它正在执行的操作,并显示原始查询的404页面。
比如像这样,
add_action(\'template_redirect\', function(){
// do nothing, if not a 404
if ( ! is_404() ) {
// return
}
// WordPress environment setup class
// https://developer.wordpress.org/reference/classes/wp/
global $wp;
// try to find term with slug
$maybeCategory = get_term_by(
\'slug\',
basename($wp->request), // the last part of the requested path
\'category\'
);
// redirect to category, if it exists
if ( $maybeCategory ) {
wp_redirect( get_term_link( $maybeCategory ) );
exit;
}
});
这种代码可以添加到自定义插件或主题的
functions.php
文件