如何将@符号添加到用户URL

时间:2021-12-04 作者:vivi

我想在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;
}

1 个回复
SO网友:Tom J Nowell

没有字面意思@ 在URL的这一部分,您必须对其进行URL编码。有时候浏览器会帮你解码,所以看起来没问题,但这只是很有帮助。只有在URL中指定用户名和密码时,才可以使用它而不进行编码。http://admin:[email protected] 否则,必须将其URL编码为%40.

如果修改正则表达式使其也与@ 还是不行,因为@ 将转换为%40 在发送到浏览器之前。

谢天谢地,如果您尝试添加@ 在手动WordPress中,它足够聪明,可以将您重定向到最近的页面,通常是同一用户的作者存档。

也要小心这些代码,删除/author/ 规则的一部分意味着/test-page/ 也将匹配作者存档,您将得到冲突,要么将每个页面都变成作者存档,要么阻止作者存档工作。

相关推荐

How to change a username?

如何更改用户名?我的用户名以作者身份出现在搜索引擎中,但它是一个基于产品和服务的网站(仅使用页面),供客户使用。如果我无法删除作者页面,我需要更改用户名。如果打开,您似乎可以更改用户名wordpress.com 所以这意味着它可能是可能的,但这是一个个人WP安装。