我正在为我的作者页面使用自定义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;
}
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
是的,在这种情况下,您应该刷新重写规则,因为您根据每个作者的昵称为其添加规则。
更确切地说,你应该在任何一位作者更改了他的名字后刷新它们。
你可以使用author_rewrite_rules
钩子,在wp_rewrite_rules()
仅当数据库中没有规则时。因此,如果不刷新它们,您的过滤器将不会被触发,您的新规则也不会被添加。