如果你想重写example.com/test123
(标准WordPress页面)至example.com/test234
(另一个标准WordPress页面)无需在数据库中保存重写规则,那么一个选项是使用request
过滤器挂钩:
add_filter( \'request\', function ( $query_vars ) {
if ( isset( $query_vars[\'pagename\'] ) ) {
$slug = $query_vars[\'pagename\'];
// Define a list of source and target Page slugs.
$mapping = [
\'test123\' => \'test234\',
\'test567\' => \'foo-bar\',
//...
];
// If the requested slug is in the mapping list, change the requested page slug.
if ( ! empty( $mapping[ $slug ] ) ) {
$query_vars[\'pagename\'] = $mapping[ $slug ];
}
}
return $query_vars;
} );
您还可以使用
parse_request
动作挂钩,但上面的内容应该可以,所以我不包括该动作挂钩的代码。
但是,无论您使用过滤器挂钩还是操作挂钩,窍门都是在内部更改请求的页面slug,前提是它与映射列表/数组中的源slug匹配。这样,请求(或访问)example.com/test123
本质上与请求相同example.com/test234
其中HTTP头和页眉、内容、页脚等是相同的。