乌徒帮技术范儿WordPressWordPress开发 › 使用add_rewrite_rule()为wordpress增加路由地址

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

分类:WordPress开发

在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!

已有3条评论 快速评论
  1. suren #5585楼 2014/12/30 17:29:48 回复

    很好,学习了

  2. 管理员 #2261楼 回复给@2259楼 2012/10/22 12:24:29 回复

    恩恩,谢谢提供方法

  3. Reuel #2259楼 2012/10/21 19:55:01 回复

    <pre>
    add_action( ‘init’, ‘rewrite’ );
    function rewrite() {
    add_rewrite_rule( ‘admin/?$’, ‘wp-admin’, ‘top’ );
    add_rewrite_rule( ‘login/?$’, ‘wp-login.php’, ‘top’ );
    add_rewrite_rule( ‘register/?$’, ‘wp-register.php’, ‘top’ );
    }
    </pre>

    直接在函数里添加以上规则,可以不动.htaccess

填写个人信息,赶快回复吧!