我想在URL中用户名的开头添加@符号。我找到这段代码可以从URL中删除author,但我不知道该如何更改,将@添加到用户名的开头,地址将是@authorname或@昵称
// The first part //
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;
}
// The second part //
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网友:Tom J Nowell
没有字面意思@
在URL的这一部分,您必须对其进行URL编码。有时候浏览器会帮你解码,所以看起来没问题,但这只是很有帮助。只有在URL中指定用户名和密码时,才可以使用它而不进行编码。http://admin:[email protected]
否则,必须将其URL编码为%40
.
如果修改正则表达式使其也与@
还是不行,因为@
将转换为%40
在发送到浏览器之前。
谢天谢地,如果您尝试添加@
在手动WordPress中,它足够聪明,可以将您重定向到最近的页面,通常是同一用户的作者存档。
也要小心这些代码,删除/author/
规则的一部分意味着/test-page/
也将匹配作者存档,您将得到冲突,要么将每个页面都变成作者存档,要么阻止作者存档工作。