Sonstiges

WordPress: Name von Link trennen

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.


Neue Stellenangebote

Growth Marketing Manager:in – Social Media
GOhiring GmbH in Home Office
Senior Social Media Manager:in im Corporate Strategy Office (w/d/m)
Haufe Group SE in Freiburg im Breisgau
Senior Communication Manager – Social Media (f/m/d)
E.ON Energy Markets GmbH in Essen

Alle Stellenanzeigen


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

Über den Autor

Robert Basic

Robert Basic ist Namensgeber und Gründer von BASIC thinking und hat die Seite 2009 abgegeben. Von 2004 bis 2009 hat er über 12.000 Artikel hier veröffentlicht.

42 Kommentare

  • 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

  • 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 😉

  • 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 😉

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

  • 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

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

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

  • 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.

  • 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?

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

  • 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

  • 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.

  • 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

  • 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.

  • 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.

  • 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…

  • 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.

  • 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)

  • 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 @. 😉

  • 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…

  • […] 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. […]