Blog

WordPress: Name von Link trennen

Thema: Allgemein, 08.08.2008

suche mir den Wolf, finde aber die wohl popelig einfache Lösung nicht. Es geht um die Blogkommentare hier. Möchte gerne den Namen des Kommentierenden von einem gegebenenfalls gesetzten Link zur Webseite des Kommentierenden trennen. Begründung siehe im Folgeartikel.

Bisher steht beim Namen des Kommentierenden:
Robert Basic
Funktion dazu: comment_author_link()

In Zukunft soll stehen:
Robert Basic @
oder
Robert Basic [ohne "@", wenn kein Backlink gesetzt]

Mit der Funktion
php comment_author_url_link(‘@’, ”, ”);
klappt das nur zum Teil, denn wenn der Kommentierende keinen Backlink gesetzt hat, erscheint das “@”-Zeichen dennoch und verlinkt zudem dummerweise auf den Blogartikel selbst, was Schwachsinn ist. Hätte erwartet, dass nix erscheint, kein @ und kein Link, wenn der Backlink leer ist. Könnt Ihr Euch aktuell in den Kommentaren anschauen, solange die Funktion comment_author_url_link noch aktiv ist.

Hat jemand eine Lösung?

Update: In den Kommentaren findet Ihr einige Lösungsansätze, mit dem von Reiffix hatte es geklappt. Ist allerdings keine sehr pflegeleichte Lösung, da sie nicht im Template verankert wird, sondern im Core von WordPress, was bei Updates natürlich etwas Anpassung bedarf. Siehe dazu die Textdatei

In der Datei wp-includes/comment-templates.php wird eine Zeile angepasst:
- aus $return = “[a href='$url' rel='external nofollow']$author[/a]“;
- wird $return = “$author[a href='$url' rel='external nofollow']@[/a]“;

Zweite Lösung, die keine Anpassung bei WordPress-Updates bedarf, da sie lediglich im Design-Template hinterlegt wird, und zwar in der Comments.php: Siehe Codesnippet. Danke, paddya!

Solltet Ihr die Lösung von paddya nutzen, beachtet bitte, dass es ein kleines, aber schnell lösbares Problem mit dem Plugin Easy Gravatars (1.2) geben kann. Die Pics der User werden dann nämlich nicht mehr angezeigt. Dazu im Optionsmenue des Plugins den Schalter “API Hook” auf “Comment Text” umlegen. Siehe Kommentar

Warum das Ganze? Begründung steht im Folgeartikel


     

Artikelzusatzinfos
3. Artikelstatistik:
· read: 6918 · today: 2 · last: 24. May 2012

Trackback URI | Comments RSS

42 Kommentare zu “ WordPress: Name von Link trennen ”

  1. #1 Christian schrieb

    hab lange nichts mehr in php gemacht und hab auch kein wordpress, aber ich würde sowas versuchen:

    if (comment_author_link() != ” “) {
    comment_author_url_link(’@’, â€?, â€?);
    }

    also einfach eine if-Anweisung die überprüft ob der Link gesetzt wurde und dann den entsprechenden link mit dem @ setzt.

    Gruß Christian

  2. #2 Marc [www] schrieb

    Kann man hier einen code-tag setzen?

    /edit: nein, kann man nicht *g

    Dann halt Kontaktformular :p

  3. #3 Robert Basic [www] schrieb

    @Christian, das hatte ich schon, aber der Rückgabewert ist stets not empty

    @Marc, ne, leider nicht

  4. #4 Marcel [www] schrieb

    Versuchs hier mit:

    if(get_comment_author_url()) {
    echo “<a href="\" . get_comment_author_url() . "\">@</a>";
    }

  5. #5 Robert Basic [www] schrieb

    k, probier ich

  6. #6 Marc [www] schrieb

    Was ist denn mit…

    comment_author();
    if(comment_author_link() != “”) {
    a href=”php? comment_author_link();?”@ /a
    }

    PHP- und html klammern natürlich noch setzen ;-)

  7. #7 Chris Reifix [www] schrieb

    Hey rob!
    Hier die Lösung
    geh in die wp-includes/comment-template.php und suche dort nach:

    function get_comment_author_link() {
    /** @todo Only call these functions when they are needed. Include in if… else blocks */
    $url = get_comment_author_url();
    $author = get_comment_author();

    if ( empty( $url ) || ‘http://’ == $url )
    $return = $author;
    else
    $return = “$author“;
    return apply_filters(‘get_comment_author_link’, $return);
    }

    ersetze es hiermit:

    function get_comment_author_link() {
    /** @todo Only call these functions when they are needed. Include in if… else blocks */
    $url = get_comment_author_url();
    $author = get_comment_author();

    if ( empty( $url ) || ‘http://’ == $url )
    $return = $author;
    else
    $return = “$author@“;
    return apply_filters(‘get_comment_author_link’, $return);
    }

    Das wars..
    liebe Grüße

    P.S. Der wandelt das immer um, check deine Mails Rob dann ist es richtig, habs getestet ;-)

  8. #8 paddya schrieb

    comment_author_url() ist die korrekte Funktion ;)

    Code sieht also so aus: http://nopaste.php-q.net/41375 (untested)

    Edit: Zur Not statt comment_author_url() einfach echo get_comment_author_url(); nehmen.

  9. #9 paddya schrieb

    Jetzt hast du anscheinend zwei mal comment_author_url_link(); drin. Hast du meinen Edit nicht gesehen?

  10. #10 Robert Basic [www] schrieb

    doch hatte ich, Lösung kommt gleich oben im Update (bei Deiner Lösung gab es ein Prob mit dem Rückgabewert anscheinend)

  11. #11 Matthias [www] schrieb

    Jetzt nur noch ein Leerzeichen dazwischen… ;-)

  12. #12 Chris Reifix [www] schrieb

    Meine klappt 100% ;-)
    schade das ich es hier nicht darstellen kann, hoffe du hast die mail aber bekommen

    gruß

  13. #13 paddya schrieb

    Ah, I see :) Jop, du brauchst einmald get_comment_author_url() im if und einmal comment_author_url() zur Ausgabe. Sorry, Denkfehler von mir (nächstes Mal vorher testen ;))

    Chris Reifix: Und beim nächsten Update ist alles futsch ;)

    Edit: Hier die richtige, saubere Lösung: http://nopaste.php-q.net/41377

  14. #14 Robert Basic [www] schrieb

    @paddya, solltest Du Deinen angepassten Code hinterlegen, kann ich diese Lösung auch vorstellen dann;)

    @Reifix: Siehe Artikel-Update oben, hab den Code angehangen

  15. #15 paddya schrieb

    Siehe Edit (#13) :)

  16. #16 Chris Reiffix [www] schrieb

    Danke, nur mit 2f reiffix ;-)

    Soll wohl SEO-Spam vermeiden oder?

  17. #17 paddya schrieb

    Genau: http://www.sistrix.de/news/782.....segel.html

    Kam mir gleich in den Sinn, als ich die Überschrift gelesen habe…

  18. #18 Robert Basic [www] schrieb

    so, paddya, Lösung getestet, klappt auch prima jetzt. Siehe zweites Update im Artikel.

    Frage: Performancetechnisch geben sich beide Lösungen nix?

  19. #19 paddya schrieb

    Sollten genau gleich schnell sein. Meine könnte einen Tick schneller sein, da z.B. die Überprüfung auf comment_author_url() == ‘http://’ fehlt. Aber im Endeffekt dürfte der Unterschied im Microsekunden-Bereich liegen.

  20. #20 Stefan [www] schrieb

    Mich würde ja sehr interessieren, warum du den Link vom Namen trennen möchtest?
    Wegen Rankings? Oder einfach nur so?
    Du hast doch bestimmt damit etwas im Sinn, oder?

  21. #21 Robert Basic [www] schrieb

    komisch, ist Gravatar.com dead oder haben wir nun warum auch immer die Gravatar-Funktion gekillt? Hab darin an sich nix gedreht. Läuft über das Plugin Easy Gravatar http://wordpress.org/extend/plugins/easygravatars/

    @Stefan, kommt gleich, erstmal alles glattziehen;)

  22. #22 paddya schrieb

    Ich vermute, die Funktion greift auf einen Plugin-Hook in comment_author_url_link() zu. Wenn du willst, guck ichs mir grade mal an.

  23. #23 Robert Basic [www] schrieb

    sprich, die Reihenfolge der Funktionsabarbeitung sollte nun ein Problem darstellen? Verstehe ich aber nicht, da doch der Scope beider Funktionen (der Check ob Link leer und Easy Gravatar) doch völlig separat laufen?

    Ich verwende zZt Deine Lösung mit der Funktion comment_author_url(). Comment-Template.php ist wieder glattgezogen in wp-includes

  24. #24 paddya schrieb

    Wie läuft die Einbindung der Gravatars bei dir? Über ein “echo eg_gravatar($text);” im Comment-Template?

    Edit: Ah, I see. Das wird automatisch angehangen. Mal gucken, inwiefern man das reparieren kann.

  25. #25 Robert Basic [www] schrieb

    nope, easy gravatar erwartet keine Angabe im Template.

    Habe zwecks Test den paddya-Code raus und wieder die alte Funktion aktiviert comment_author_link() = Gravatar erscheint.

    Crazy

  26. #26 paddya schrieb

    Hier:

    “[...]and you can select to attach the gravatar to either the comment author link, or the text of the comment. ”

    Wähle im Plugin-Menü mal, dass der/das Gravatar an den Comment-Text angehangen werden soll. Evtl. muss man dann aber das CSS entsprechend anpassen.

    Problem ist, dass standardmäßig “get_comment_author_link” als Hook verwendet wird. Die Funktion wird aber in meiner Lösungsvariante gar nicht mehr aufgerufen.

  27. #27 Robert Basic [www] schrieb

    so, habe nun folgendes gemacht:
    1. easy gravatars upgedatet auf allerneueste Version
    2. die bietet nämlich, siehe da, eine spezielle Option an:
    API Hook to “Comment Text” or “Comment Author Link”
    3. Habe “Comment Text” gewählt
    4. den paddya-Code wieder in die comments.php
    und es klappt mit der Anzeige der Gravatare

    Würde ich den API Hook auf “Comment Author Link” setzen, werden die Gravatare nicht mehr angezeigt.

  28. #28 paddya schrieb

    Tag gerettet, würde ich sagen :)

  29. #29 Robert Basic [www] schrieb

    yep:)) Cool. Habe Deinen Comment 26 gerade in Moderation gelesen, hat sich überschnitten. Interessant aber, dass Easy Gravatar dermaßen von den Funktionen abhängt, die man im Template hinterlegt hat…

  30. #30 paddya schrieb

    Das sind leider die Nachteile dieser “One-Click-and-it-works”-Lösungen. Die funktioneren meist nur mit Themes, die dem Standard-Theme in Sachen Struktur sehr ähnlich sind.

  31. #31 Prinzzess [www] schrieb

    scheint ja zu klappen!
    im wp-de-blog wird das sogar noch so gelöst, dass der link nicht anklickbar ist, aber vollständig gezeigt wird. (nicht so ganz mein ding)

  32. #32 Basic Thinking Blog | Wordpress: Name von Link trennen II. [www] schrieb

    [...] die technische Lösung gefunden ist, wie man den Namen des Kommentierenden in einem Blog-Kommentar vom Link zur Homepage [...]

  33. #33 » BasicHelping – Link vom Wordpressautor trennen [www] schrieb

    [...] Blog gibts sicherlich auch einigen guten Pagerank abzugreifen. Um das zu verhindern hat Robert um Hilfe gebeten. Und hey ich konnte helfen. Um den Link vom Autor zu trennen macht folgendes: 1. Öffne [...]

  34. #34 Michael [www] schrieb

    Wenn dir die interne Verlinkung wichtig ist, dann würde ich noch eine Ausnahme für den Admin anlegen, dann ist “Robert Basic” immer auch der Linktext und bei allen anderen nur @. ;)

  35. #35 Robert Basic [www] schrieb

    das ist für mich egal, aber danke für den Vorschlag

  36. #36 jan [www] schrieb

    die idee (samt anleitung) hatte ich auch schon. hat aber den letzten redesign nicht überlebt:

    http://www.lopsta.com/2008/01/.....ifikation/

  37. #37 links for 2008-08-08 [delicious.com] – schorleblog [www] schrieb

    [...] basic thinking blog | wordpress: name von link trennen (tags: photography wordpress culture howto kommentar via:mento.info) [...]

  38. #38 Linkliebe für alle – no comments bei nofollow « dofollow,Kommentare,Linkgeiz,Linkliebe,Links,nofollow,Traffic « SEO Scene [www] schrieb

    [...] mit den Gedanken über irgendwelche follow-oder-doch-nicht-Plugins, die Ausnahmen zulassen, den Namen vom Link trennen oder einem Buntstift das Fliegen [...]

  39. #39 BasicBlogger.de [www] schrieb

    Snapshots der Blogs anzeigen…

    Neulich habe ich mich bei Blogoscoop.net angemeldet, als ich auf der Seite meines Blog in Blogoscoop war, habe ich bei dem Vorschaubild der Webseiten den Copyrighthinweis http://websnapr.com gesehen, und habe gleich auf der Seite nachgeschaut, wof&#252…

  40. #40 son-riab.com | Kommentar-Spam [www] schrieb

    [...] danke an Ute und Robert für die ein oder andere Idee (auch wenn die Umsetzung teilweise nicht so wollte). Wenn der [...]

  41. #41 Ahmet Topal [www] schrieb

    Ich glaub sogar, ich habe eine viel leichtere Variante gefunden, einfach diesen Code eingeben, ich habs rausgefunden, als ich ein neues WordPress Plugin geschrieben hab. Hier der Code:

    http://nopaste.php-q.net/52491

  42. #42 Beobachtungen zu Kommentarspam – Artikel auf gumia.de [www] schrieb

    [...] Heute habe ich daher ein weitere Spamabwehr in den Kommentaren eingebaut, die eben diese Keywordspammer abhalten soll. Ich habe nun den Namen des Kommentators von einem gesetzten Backlink getrennt. Der Backlink enthält nun einen einheitlichen und neutralen Linktext. Wer dies ebenfalls in seinem Blog umsetzen möchte, dem empfehle ich zur Verwendung den folgenden php-Code unter nopaste.php-q.net/41377. Weitere Infos hierzu kann man bei Robert nachlesen: WordPress: Name von Link trennen. [...]


Dein Kommentar?

(Eingabe von Name, Mail und Webadresse ist freiwillig)