填写您的邮件地址,订阅我们的精彩内容:

使用add_rewrite_rule()为wordpress增加路由地址

924

在wordpress中,我们渴望为我们的博客增加一些我们想要的地址,让博客地址更容易被记住或看起来更友好更专业。而add_rewrite_rule()函数正为我们提供了这个功能,然而要真正实现wordpress的路由,还确实有点麻烦,本文较为详细的给大家介绍这一过程。

一、理清思路,你要做什么

或许你读过笔者的《为你的wordpress更换/login的友好登陆地址》一文,文章中实现了让login代替wp-login.php,让登陆地址比较友好,然而文章中使用了.htaccess文件来实现最后的路由,本文就让你抛弃.htaccess,实现真正的wordpress路由。

二、了解add_rewrite_rule函数

进入官方的API文档页面了解该函数的基本用法。我们学着为wordpress增加login的路由,经笔者多次尝试,最终确定如下:

add_rewrite_rule(‘^login?([^/]*)’,’wp-login.php?$matches[1]’,’top’);

我也不知道为什么,修改?的位置或去掉,都不会成功。

三、一定要在后台在更新一次固定链接

想要实现login的效果,前提条件是你已经使用了固定链接,让.htaccess生效。在这个前提下,wordpress重新路由的功能才能起效。为什么一定要再更新一次固定链接呢?.htaccess并没有发生变化啊?这是因为所有新增的路由规则都是记录在数据库中的,请看这篇文章

四、终结版代码

add_filter(‘wp_redirect’, ‘login_url’);
add_filter(‘network_site_url’,’login_url’);
add_filter(‘site_url’,’login_url’);

function login_url($url)
{
$old? = array( “/(wp-login.php)/”);
$new? = array( “login”);
return preg_replace( $old, $new, $url, 1);
}

add_rewrite_rule(‘^login?([^/]*)’,’wp-login.php?$matches[1]’,’top’);

将上面的代码放在functions.php文件中,上传后,到后台更新一次固定链接,OK!

下面我简单说几句