我有一个关于wordpress url重写的问题。我目前正在开发一个语言插件(几乎也完成了),作为最后一件事,我希望看到每个url都被更改,以便它包含用户选择的当前语言(或默认语言,如果用户没有更改语言)。
我改变链接没有问题,问题在于服务器完成的重写。下面你可以看到我是如何修改链接的。
public function register_filters()
{
add_filter('page_link', array(get_class(),'alter_permalink'));
add_filter('post_link', array(get_class(),'alter_permalink'));
}
public function alter_permalink($permalink)
{
$permalink = str_replace(get_option('home'), '', $permalink);
$permalink = trim($permalink, '/');
//The next line is actually a method that is being called,
//but it will return a string like this.
$lang = 'EN';
return get_option('home') . '/' . $lang . '/' . $permalink;
//This returns a link that looks something like this:
//http://somedomain.com/EN/permalink-structure
}
所以你可以看到,我创建链接没有问题,问题在于服务器本身的url重写。
我试过这个方法:http://shibashake.com/wordpress-theme/wordpress-permalink-add但我也没能成功。问题是,我似乎不明白这些重写规则是如何工作的,而且我似乎也找不到关于这个主题的像样的教程。
要监听处理url的过滤器是请求。
function request_handler($vars) {
//modified $vars here
return $vars;
}
add_filter('request', 'request_handler', 11);
我已经写了一个插件自定义url在wp。查看源代码,看看我是如何处理它的。http://wordpress.org/extend/plugins/auto-url/