it-swarm.com.de

WordPress Internal @ Mentions

Ich suche nach einer Möglichkeit, innerhalb einer WordPress-Installation auf Autorenseiten zu verlinken, indem ich einfach das @ -Zeichen vor den Benutzernamen einer Person in einem Beitrag setze ... genau wie bei Twitter.

Beispiel:

Wenn der Benutzername "Bill256" ist und ich "@ Bill256" schreibe, wird er mit seiner Autorenseite verlinkt.

8
AndrettiMilas

Dies ist etwas knifflig, da sanitize_user Leerzeichen in Benutzernamen zulässt. Dies bedeutet, dass es schwierig ist, zu vermeiden, dass die gesamte Phrase "@ johndoe hat gesagt, dass ..." als Gegensatz verwendet wird nur den tatsächlichen Benutzernamen '@johndoe' und Sie haben kein Trennzeichen am Ende, das helfen würde. Um dies zu vermeiden, habe ich die Anforderung gestellt, Leerzeichen im Benutzernamen durch '+' zu ersetzen.

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>][email protected]([A-Za-z0-9_.\-*@\+]+)[^A-Za-z0-9_.\-*@\+]/',
    'look_for_author',
    $content
  );
  return $content;
}
add_filter( 'the_content', 'hyperlink_authors', 1 );

Ich würde nicht erwarten, dass diese Lösung sehr robust ist, nicht ohne viel Regex-Optimierung. Und ich denke, Sie wären mit einem Shortcode besser dran, aber los geht's.

Hinweis: Mir ist aufgefallen, dass diese Site eine ähnliche erwähnenswerte Funktionalität aufweist. Wenn Sie einen Kommentar schreiben, können Sie andere Benutzer benachrichtigen, indem Sie "@Benutzername" eingeben. Benutzernamen können hier jedoch Leerzeichen enthalten, wie dies bei WordPress der Fall ist. Das "Leerzeichen" -Problem wurde hier dadurch gelöst, dass Leerzeichen nur entfernt und nicht durch "+" - Zeichen ersetzt wurden. Das könnte eine andere Art sein, das Problem zu lösen.

13
s_ha_dum

Schauen Sie sich das P2-Thema an. Es tut dies und nennt sie "Erwähnungen".

http://themes.svn.wordpress.org/p2/1.4.2/inc/mentions.php

4
Otto