如果使用自定义作者重写规则,在创建新用户时是否需要刷新重写规则?

时间:2014-04-18 作者:Gixty

我正在为我的作者页面使用自定义URL,如下所示:

http://site.com/author_name

创建新用户后,该作者页面显示为未找到;但是,如果我从管理面板更新我的permalink结构,就会找到作者页面。

那么,有必要在创建新用户后刷新重写规则吗?还有别的办法吗?

从codex上,我了解到刷新重写规则是一项非常昂贵的任务。所以,我想避免这种情况。有可能吗?

编辑:

add_filter(\'author_rewrite_rules\', \'no_author_base_rewrite_rules\');
function no_author_base_rewrite_rules($author_rewrite) { 
    global $wpdb;
    $author_rewrite = array();
    $authors = $wpdb->get_results("SELECT user_nicename AS nicename from $wpdb->users");    
    foreach($authors as $author) {
        $author_rewrite["({$author->nicename})/page/?([0-9]+)/?$"] = \'index.php?author_name=$matches[1]&paged=$matches[2]\';
        $author_rewrite["({$author->nicename})/?$"] = \'index.php?author_name=$matches[1]\';
    }   
    return $author_rewrite;
}

add_filter(\'author_link\', \'no_author_base\', 1000, 2);
function no_author_base($link, $author_id) {
    $link_base = trailingslashit(get_option(\'home\'));
    $link = preg_replace("|^{$link_base}author/|", \'\', $link);
    return $link_base . $link;
}

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

是的,在这种情况下,您应该刷新重写规则,因为您根据每个作者的昵称为其添加规则。

更确切地说,你应该在任何一位作者更改了他的名字后刷新它们。

你可以使用author_rewrite_rules 钩子,在wp_rewrite_rules() 仅当数据库中没有规则时。因此,如果不刷新它们,您的过滤器将不会被触发,您的新规则也不会被添加。

结束

相关推荐

Performance on WPMS

我的WPMS站点托管在8核/32mb RAM服务器上,但响应时间非常长。我们有大约1000个博客(单个db上有35000多个表)和70000个页面浏览量。我认为我可以缩短响应时间,将具有更多页面浏览量的博客移动到单独的DB中,并使用hyper DB插件将所有博客拆分为每个DB 100个博客。你觉得怎么样?