欢迎关注大数据技术架构与案例微信公众号:过往记忆大数据
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
过往记忆大数据

如何在WordPress中自定义URL规则(rewrite rules)

  我们可能会自己开发一些插件(比如微信公众号插件),在默认情况下,插件使用的URL很不友好,而且对SEO不好,比如我微信公众号的URL默认是 https://www.iteblog.com?iteblog_hadoop 。在Wordpress中,实现自己的rewrite rules方式有很多种,本文就是其中一种方法。


如果想及时了解Spark、Hadoop或者Hbase相关的文章,欢迎关注微信公共帐号:iteblog_hadoop

使用add_rewrite_rule

  现在我想把 https://www.iteblog.com?iteblog_hadoop URL地址修改成 https://www.iteblog.com/wechat?iteblog_hadoop,这种情况下我们可以使用 add_rewrite_rule($regex, $redirect, $after) 函数来实现,如下:

function iteblog_rewrite_rule() {
  add_rewrite_rule('wechat$', 'index.php?iteblog_hadoop'', 'top');
}
add_action('init', 'iteblog_rewrite_rule');

add_rewrite_rule 函数中最后一个参数是可选的,只能是top或者bottom,意思是我们这个自定义规则是放在已有规则最前面(top)还是最后面(bottom);如果放在已有规则最前面,那么Wordpress会先使用这个rewrite rules;如果放在已有规则的最后面,那么Wordpress会优先使用已有的规则。这个参数默认值是bottom,我们需要根据自己的需求设置。

我们把上面的代码添加到 functions.php 文件里,保存。现在你访问 https://www.iteblog.com/wechat?iteblog_hadoop 页面不出意外的话肯定是返回的404!这是因为我们添加了自己的rewrite rules,需要到后台依次点击 设置 -> 固定链接,然后点击里面的 保存修改 按钮,这时候我们的rewrite rules就已经添加进系统了,现在你可以访问 https://www.iteblog.com/wechat?iteblog_hadoop 页面了。

使用rewrite_rules_array

但是如果你需要自定义多条rewrite rules,add_rewrite_rule函数就不行了,我们需要使用rewrite_rules_array了,这属于Wordpress内置的hook,我们可以在里面添加很多条规则,使用如下:

function add_rewrite_rules($aRules){
        $aNewRules = array(
                'wechat$' => 'index.php?iteblog_hadoop'
        );
        $aRules = $aNewRules + $aRules;
        return $aRules;
}
add_filter('rewrite_rules_array', 'add_rewrite_rules');

我们可以在 $aNewRules 是一个数组,所以可以在其中添加任意数量的规则。

移除已有的规则

我们也可以利用这个钩子来移除已经存在的规则,使用如下:

add_filter('rewrite_rules_array', 'kill_feed_rewrites');
function kill_feed_rewrites($rules){

    foreach ($rules as $rule => $rewrite) {

        if ( preg_match('/^foo.*(feed)/',$rule) ) {
            unset($rules[$rule]);
        }

    }

    return $rules;
}

好了,现在你可以自由地自定义URL规则了。

本博客文章除特别声明,全部都是原创!
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【如何在WordPress中自定义URL规则(rewrite rules)】(https://www.iteblog.com/archives/1988.html)
喜欢 (7)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!