Kommentare mit Überschriften

  • Hi Forum,

    ich nutze Wordpress 2.9 und möchte folgendes ändern: Die Kommentatoren sollen ihren Kommentaren eine Headline zufügen können.

    Dazu missbrauche ich das standardmäßige URL-Feld der Wordpress-Kommentar-Form (die URL braucht es für meine Zwecke nicht). Nur weiß ich nicht, wie ich wordpress dazu bekomme, eine Überschrift zu kreiren, statt dem Autornamen eine URL zu unterlegen.

    Im Theme habe ich im comment . php -template folgende Stelle gefunden:

    PHP
    <div><input type="text" tabindex="3" size="25" name="headline" id="headline" value="<?php echo  esc_attr($comment_author_url); ?>" />

    Das php echo esc attr. sorgt wohl dafür, dass der Autor eine URL bekommt. Kann ich stattdessen den in diesem Feld eigegebenen Text z.B. als h4 in den Content-Bereich des Kommentars einfügen?

    Freue mich über Tipps und Hilfestellungen...

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Das geht auf jeden Fall. Ändere dafür aber bitte nicht Core-Dateien von WordPress. Das ist nie eine gute Idee, da Du das dann bei jedem Update wiederholen musst. Und die kommen recht häufig.

    Die Änderung gehört vielmehr ins Theme oder, falls Du das häufig wechseln möchtest, in ein Plugin. Kopier doch erstmal hier rein, wie die Kommentare in Deinem Theme ausgegeben werden.

    Im Backend wird der Autor dann aber ggf. trotzdem auf seine Überschrift verlinkt. Einiges kann man da sicher auch anpassen. Ich weiß aber nicht, wie weit das geht. Bist Du sicher, dass diese Zweckentfremdung die beste Lösung ist? ... Hm, habe mal gesucht und kann so auf Anhieb tatsächlich kein Plugin dafür finden, obwohl die Tabellenstruktur von WP das ja nun vorsieht (Metawerte an Kommentaren). Erstaunlich. Zeit müsste man haben... ;-)

  • Comment Meta

    Hi Ammaletu,

    erst einmal danke für die Antwort!! Inzwischen bin ich auch über Comment-Meta gestoßen, nur hab ich leider nicht viele Beispiele gefunden, von den man abschauen könnte (kann leider mehr oder weniger kein PHP und mache dann eher trial & error).

    Den einzigen Bericht gibt's bei soabboxdave.com

    ich hab jetzt erst einmal in meiner Comment.php ein zusätzliches Feld eingefügt:

    PHP
    <div><input type="text" size="25" name="headline" value="<?php echo $myid; ?>" />
    <label for="headline"><?php _e('Headline', 'cp'); ?></label></div>

    Die Value-Angabe ist natürlich unsinn, da recherchiere ich noch, was da reingehört.

    Der Rest steht in der Theme-Functions.php. Soapboxdave folgend hab ich da jetzt erst einmal die add action eingebaut:

    PHP
    add_action ('comment_post', 'add_meta_settings', 1);
    function add_meta_settings($post_id) {
    add_comment_meta($post_id, 'headline', $_POST['headline'], true);
    }

    Bin mir nicht so sicher, ob das so richtig ist.

    Dann kommt der ganze Comment-Absatz in der Theme-Function (ich poste jetzt einfach mal den ganzen code und hoffe, euer Speicherplatz macht da mit ;-):

    Was ich da geändert habe ist das copy&paste der variablen von soapbox:

    PHP
    $GLOBALS['comment'] = $comment;
    $headline_array = get_comment_meta(get_comment_ID(),"headline");
    $headline = $headline_array[0]; ?>

    ... und dann habe ich über den Comment-Text die headline reingeknallt:

    PHP
    <div class="comment-entry" id="comment-<?php comment_ID(); ?>">
                       <div class="comment-headline">
                <?php echo $headline; ?> 
                       </div>
                <?php comment_text() ?>

    Müsste man wohl noch als h ausgeben, etwa so?

    PHP
    <?php echo '<h4>'.$headline.'</h4>'; ?>

    Ist wahrscheinlich noch ziemlicher Unsinn, aber so ganz grob müsste es doch gehen.

    Zum Hintergrund, weshalb ich Headlines im Comment haben möchte (gibt's bei twoday übrigens standardmäßig): Ich versuche, mit dem Wordpress-Plugin WP-Answers eine Art getsatisfaction mit Wordpress zu machen, also Feedbacks über Kommentare einzuholen. Headlines in Kommentaren geben dem Leser einen schnelleren Überblick und motivieren möglicherweise, einzelne Kommentare zu raten ...

  • Wow, das sieht doch schon gut aus. Ich hab's jetzt nur überflogen, ist schon spät und noch viel zu tun. Wenn Du an spezifischen Stellen hängst, sag Bescheid und ich schaue genauer drauf. Ansonsten Danke fürs Posten, das hilft sicher auch anderen weiter.

  • Resolved. Ticked can be closed.

    Also Leute,

    dass ich als totale Coder-Nulpe sowas hinbekomme, spricht schon für Wordpress - und ein bisschen für Google. Denn hier gibt's eine kleine Beschreibung, wie sich Risi-Bisi so ein Extra-Feld einbauen und ausgeben lässt. Feine Sache.

    In meinem Fall musste ich nur noch ein klitze-bisschen korrigieren. Nochmal die Schritte:

    Erstens: Gehe zur comment.php und füge ein Input-Feld ein:

    PHP
    ...
      <div><input type="text" tabindex="4" size="25" name="headline" id="headline" />
    <label for="headline"><?php _e('Headline', 'cp'); ?></label></div>
    ...

    Value brauchts natürlich nicht, da wir keinen vorgegebenen Wert im Feld haben wollen.

    Dann gehe in die functions.php deines themes und füge erst einmal die add action ein:

    PHP
    add_action ('comment_post', 'add_meta_settings', 1);
    function add_meta_settings($post_id) {
    add_comment_meta($post_id, 'headline', $_POST['headline'], true);
    }

    Dann geht es um die Ausgabe. Entweder wird die wieder in der comment.php gesteuert, oder - wie bei mir - in der functions.php, je nach theme. Dort baut man erst einmal die Variablen:

    PHP
    function cp_comments( $comment, $args, $depth ) 
    {
    $GLOBALS['comment'] = $comment;
    $headline_array = get_comment_meta(get_comment_ID(),"headline");
    $headline = $headline_array[0]; ?>
    ......

    ... und schaut schließlich, an welcher Stelle man per echo den Inhalt der Variable wieder ausdrucken will:

    PHP
    ...
            <div class="comment-entry" id="comment-<?php comment_ID(); ?>">
                       <div class="comment-headline">
                <?php if (isset($headline)) echo '<h4>'.$headline.'</h4>'; ?> 
                       </div>
                <?php comment_text() ?>
    ...

    Ich hab da noch ein Div drum gemacht, damit man im CSS formatieren kann, muss aber vermutlich nicht oder geht auch irgendwie anders.

    Bei mir funzt es auf jeden Fall, vielleicht hilft es dem ein oder anderen...

    PS: Funktioniert nur mit Wordpress 2.9, da nur hier die comment-meta-funktion vorhanden ist...

    Einmal editiert, zuletzt von trendschau (27. April 2010 um 19:49)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!