因此,如果你想将“lesson”改为“learn”,实际上你可以使用“rewrite”选项,如果你是registering the new post type. 然而,既然你不是,你就必须更狡猾一点。
谢天谢地,WP为您提供了hook 要在注册后修改参数,以便修改插件的实现,请执行以下操作:
function change_lesson_rewrite_rule($args, $post_type) {
if(isset($args[\'rewrite\']) && is_array($args[\'rewrite\'])) $args[\'rewrite\'][\'slug\'] = \'learn\';
else $args[\'rewrite\'] = array(\'slug\' => \'learn\');
return $args;
}
add_filter(\'register_post_type_args\', \'change_lesson_rewrite_rule\', 1000, 2);
我给了你的过滤器一个高优先级(1000),以确保它是最后影响参数数组的过滤器之一。
至于将整个域更改为另一个域,这是行不通的,也不是一个好主意。。。重写仅适用于URL的路径部分。域是您站点的地址,您不能更改它-除非您希望人们最终进入一个完全不同的站点!;)
UPDATE
好吧,看来你有了物理页面(静态或php),你想向访问者展示,而不是通过WordPress提供。在本例中,重写规则为。htaccess已允许此操作。您只需将文件放在根文件夹中即可。在您的情况下:
...
wp-config.php
wp-content
...
learn/ <---- create this folder
lesson1.php <---- place your files here
这将允许用户查看URL
https://[site 姓名]/学习/第1课。php
UPDATE 2
根据您最近的评论,您有两个选择:您可以进行Apache重写,也可以使用WordPress\'
template_redirect 钩Apache解决方案可能运行得更快一些,但这两个版本都可以工作:
Apache rewrite option
在您网站的中。htaccess文件,您可以添加此块(我会将其添加到WP的块之前)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^lesson/(.*)$ /learn/$1 [R=301,NC,L]
</IfModule>
template_redirect option
或者,您可以从WordPress的代码中进行重定向。在主题函数中。php文件,您可以添加:
function my_page_template_redirect() {
if(preg_match(\'/\\/lesson\\/(.*?)$/\', $_SERVER[\'REQUEST_URI\'], $matches)) {
wp_redirect(home_url(\'/learn/\'.$matches[1]));
exit();
}
}
add_action(\'template_redirect\', \'my_page_template_redirect\');
希望这有帮助!