我正在寻找一种链接到一个WordPress安装中的作者页面的方法,只需将@符号放在某人的用户名前面即可,就像在Twitter上一样。
例:
如果用户名是“ Bill256”,而我写“ @ Bill256”,它将被链接到他的作者页面。
我正在寻找一种链接到一个WordPress安装中的作者页面的方法,只需将@符号放在某人的用户名前面即可,就像在Twitter上一样。
例:
如果用户名是“ Bill256”,而我写“ @ Bill256”,它将被链接到他的作者页面。
Answers:
这有点棘手,因为sanitize_user
在用户名中允许使用空格,这意味着很难避免抓住整个短语“ @johndoe said ...”,而不是实际的用户名“ @johndoe”,并且结尾没有分隔符帮帮我。为避免这种情况,我提出了一个要求,即用“ +”代替用户名中的空格。
function look_for_author($login) {
if (!empty($login[1])) {
$lname = str_replace('+',' ',$login[1]);
$user = get_user_by('login',$lname);
if (!empty($user)) return ' <a href="'.get_author_posts_url($user->ID).'">'.$lname.'</a> ';
}
return ' '.$login[0].' ';
}
function hyperlink_authors( $content ){
$content = preg_replace_callback(
'/[\s>]+@([A-Za-z0-9_.\-*@\+]+)[^A-Za-z0-9_.\-*@\+]/',
'look_for_author',
$content
);
return $content;
}
add_filter( 'the_content', 'hyperlink_authors', 1 );
我希望这种解决方案不会非常健壮,除非对正则表达式进行大量调整。而且我认为使用shortcode会更好,但是您就可以了。
注意:在我看来,该站点具有类似的提及式功能。撰写评论时,您可以通过写“ @username”来通知其他用户,但此处的用户名可以像WordPress一样具有空格。通过要求仅删除空格而不是用“ +”符号代替,可以解决此处的“空格”问题。那可能是解决问题的另一种方法。
看一下P2主题。它做到了,称它们为“提及”。