Changing the entire permalink

时间:2017-02-08 作者:Lumo5

我有一个插件,可以创建自定义帖子。我想将永久链接更改为:https://[site name]/lesson/lesson-1/ 收件人:https://[site name]/learn/lesson1.php

通过wp管理界面,我只能更改slug,如下所示。

enter image description here

有一个插件可以实现这样的功能:https://wordpress.org/plugins/custom-permalinks/

但我更愿意自己手动操作。如何安全地将整个permalink更改为其他内容?

1 个回复
最合适的回答,由SO网友:nibnut 整理而成

因此,如果你想将“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
这将允许用户查看URLhttps://[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\');
希望这有帮助!

相关推荐

如何使用phpMyAdmin替换WordPress数据库中的值

我试图使用phpmyadmin在cg\\U选项行/字段中保存一个值,但数据存储不正确,保存后再次加载时,只显示部分数据。我是否需要在phpmyadmin中使用转换函数?该行为theme\\u mods\\u[主题名称]这是字段中包含的数据示例:s:19:\"thim_my_text_option\" s:0:\"\" s:30:\"thim_display_login_menu_mobile\" b:0 s:25:\"thim_body_secondary_color\"&