WP – Gästebuch integrieren mit WP 2.0 (WordPress 2.0 Guestbook)

Im August diesen Jahres beschrieb ich das Erstellen eines Gästebuchs mit Hilfe von WordPress (hier gibt es mehr Hintergrundinfos) in einem Blog. Der Artikel wurde bisher unzählige male gelesen und ebenso viele Anfragen habe ich per Mail und Kommentar bekommen.

Im August diesen Jahres beschrieb ich das Erstellen eines Gästebuchs mit Hilfe von WordPress (hier gibt es mehr Hintergrundinfos) in einem Blog. Der Artikel wurde bisher unzählige male gelesen und ebenso viele Anfragen habe ich per Mail und Kommentar bekommen.
Nun ist seit einigen Tagen WordPress 2.0 da und ich habe einen meiner Blogs auf WP 2.0 aktualisiert um alle meine Artikel und Plugins für WordPress 2.0 zu testen. Mit dem Gästebuch hatte ich da einige Probleme, da ich hier das Ausführen von php in den Seiten benötige. Leider war dies mit dem bisher verwendeten Plugin PHP-Exec nicht möglich.
Aber die WP-Community ist groß und ich habe durch Sören Weber schnell Hilfe erhalten, der mit seinem Plugin Exec-PHP für Abhilfe gesorgt hat.
Nun denn, das Gästebuch läuft nun auch unter WordPress 2.0. Viel Spaß damit.

Update:

Ab jetzt gibt es ein Plugin, welches die Arbeit erspart - siehe "WP Guestbook plugin".

Achtung:

Dadurch werden die Standard-Datein (Core) von WP verändert, in diesem Fall die comment-functions.php. Duch diesen Eingriff kann nicht so einfach ein Update von WP duchgeführt werden. Fertigt in jedem Fall vorher eine Kopie eures Blogs und der Datenbank an.

Screenshot:
Screenshot Gästebuch unter WP 2.0

Anforderungen:

Das Gästebuch funktioniert unter WP 2.0 und benötigt ein PHP-Plugin. Hier empfehle ich Exec-PHP.
Aufpassen - zum Teil gibt es Probleme mit dem WYSIWYG-Editor unter WP 2.0 und der php-Funktion.

Update:

Für alle die jenigen, die ohne PHP-Plugin auskommen wollen bzw. wenig mit PHP zu tun haben, gibt es nun zwei Templates. Mit diesen Templates fällt der Code in der Seite weg. Erstellt einfach eine neue Seite mit eurem Namen, z.B. Gästebuch, und wählt als "Template der Seite" das Guestbook Single oder Guestbook Page aus. Bei Single wird nur das Gästebuch erzeugt, ohne Sidebar und bei Page mit Sidebar. Die Templates stimmen natürlich nur für das default-Theme von WP und müssen in das Theme eures Blogs kopiert werden (/wp-content/themes/default_de/).

Installation:

Hinweis: Die beiden Dateien wurden von mir auf Basis der deutschen WP 2.0-Version von Kylaloo erstellt. Dort ist das Standardthema default_de benannt. Auf dieses Thema verweist auch die guestbook_function.

  • Ladet euch die beiden Dateien und kopiert sie in euren Webspace mit Hilfe von FTP.
  • Die Datei guestbook.phps in guestbook.php umbenennen und in euren Theme-Ordner kopieren. (wp-content/themes/default_de/)
    Diese Datei ist das Template für das Gästebuch und muss gegebenenfalls an eurer Layout angepasst werden.
  • Die zweite Datei comment-functions.phps in comment-functions.php umbenennen und die Originaldatei im Ordner wp-includes deines Blogs ersetzen. In der Datei ist die Funktion enthalten.
  • Nun erstellt in eurem WP-Blog eine neue Seite und vergebt den Namen Gästebuch (o.ä.).
  • Als Inhalt ruft ihr die Funktion guestbook_template mit Hilfe von php auf.
    Wenn ihr das besagte php-Plugin nutzt, dann sieht der Code folgendermaßen aus.

     

    
    <?php guestbook_template(); ?>
    
  • Das wars, ihr solltet nun eine neue Seite haben, die den vergebenen Namen hat und eine Gästebuch beinhaltet. Denkt daran, dass ihr die Kommentarfunktion von WP frei geben müsst, denn sonst können auch keine Einträge im Gästebuch vorgenommen werden.

Infos:

Im weiteren wollte ich, dass der jeweils letzte Beitrag als erster zu lesen ist. Dazu muss die comment-functions.php ein wenig verändert werden. Bei der Version, die ihr im folgenden downloaden könnt, ist das ganze schon passiert. Ansonsten müsst ihr folgen Code suchen (Zeile 21 und 17)


ORDER BY comment_date

und in folgenden ändern.


ORDER BY comment_date DESC

Download:

Download als php-DateiDownload als php-Datei: guestbook.phps - 4KByte

Download als php-DateiDownload als php-Datei: comment-functions.phps - 30KByte

Download als php-DateiDownload als php-Datei: guestbook-page.phps - 1KByte

Download als php-DateiDownload als php-Datei: guestbook-single.phps - 2KByte

71 Comments

  1. Hi,

    vielen Dank für die Hilfe. Stand etwas verdutzt da als nach dem Update mein Gästebuch weg war.

    In deiner comment-functions.phps fehlt nur noch die richtige Sortierung der Gästebucheinträge. Also der letzte Beitrag zu Erst. Aber das ist ja mit einem "DESC" am ende der beiden SQL Abfragen schnell eingebaut.

    Gruß
    Michael

  2. Hi,

    leider gibt es das Plugin nicht (mehr?) bei deinem angegebenen Link. Weißt du vielleicht noch einen andere Quelle?

    Viele Grüße, ishtar

  3. Danke Frank! Habe die Seite auch gleich zu meinen Favortiten dazugefügt.

    Liebe Grüße, ishtar

  4. @Onur:
    No - sorry. Only translate with google - click on the english flag. Translate the template guestbook.php in your language, it's easy and little words.

    With best regards - Frank

  5. danke für deine plugin~anleitungen!

    : Als Inhalt ruft ihr die Funktion guestbook_template mit Hilfe von PHP auf.

    der code, den du dort angibst, ist verstümmelt. opera und firefox zeigen ihn nicht korreckt an.

    kannst du das bitte einmal überprüfen und korrigieren?

    dankeschön! lieben gruß rene

  6. @rene: Kann das Problem leider nicht nachvollziehen. bei den verschiedenen Tests in verschiedenen Browsern ist der Code sichtbar, normal.
    Bitte erläutere das Problem etwas näher - Danke.

    LG Frank

  7. Hallo,
    ich habe versucht ein Gästebuch nach deiner Beschreibung in WP2.0 einzurichten.
    Leider kam nur die Meldung:
    Fatal error: Call to undefined function: guestbook_template() in /home/olympdbv/www.olympia4ever.de/wp-content/plugins/exec-php.php(45) : eval()'d code on line 1

    was heißt das???

    Gruß

    Ralph

  8. @Ralph,
    die Funktion wird in der comment-functions.php aufgerufen. Denk mal, dass du die nicht ausgetauschst hast. Falls nicht, dann bitte nochmal melden und ich sehe es mir an.

    LG Frank

  9. Hab alles so wie oben beschrieben gemacht, aber mir zeigts einfach kein Gästebuch an. 🙁

    Glaube das es mit dem php code was zu tun hat den ich einfügen sollte auf der guestbook seite.

  10. hab den fehler gefunden 🙂
    besitze die originalversion also mein pfad ist \default\ und nicht \defualt_de\... jetzt hab ich den einen pfad in der commentfunctions.php geändert aber es klappt immer noch nicht! 🙁

  11. @Manuel:
    Wenn ich mir das ansehen soll, benötige ich mehr Infos. So sehe ich auch nur die leere Seite.
    PHP-Plugin ist aktiviert und läuft?
    comment-functions.php ist installiert und die guestbook.php ?

    Ansonsten sende mir mal die comments.php aus deinem Theme per Mail.

    LG Frank

  12. Moinsen!

    Hab dein Gästebuch bei mir eingebaut und es läuft auf Anhieb. Großes Lob!
    Das einzige Problem ist, dass es sich anscheind mit meinem Theme (Loop) nicht so versteht. Könntest du dir das bitte mal angucken und mir evtl Tips geben? Wäre dir sehr dankbar.
    http://www.the-papst.de/?page_id=7

  13. gibt es in diesem gästebuch eine "blätterfunktion" sobald die einträge mal so lang werden?ich suche schon seit wochen genau so ein gästebuch mit blätterfunktionen

  14. @manny:
    nein, es gibt bisher keine Blätterfkt. Dazu müsste man ein weiteres Plugin integrieren, dazu fehlte mir aber bisher einfach die Zeit. Genauso wie ich für dieses Gästebuch eigentlich ein Plugin machen wollte, damit es einfacher zu implementieren ist.
    Sobald ich wieder etwas mehr Zeit habe, setze ich mich dran.
    LG Frank

  15. Hallo,
    das Gästebuch läuft super - aber wie das immer so ist... man findet immer etwas was besser sein könnte. Ich habe mir schon die augen blutig gesucht im quelltext - aber ich glaube das ist kniffliger.
    Es handelt sich um die druchnummerierung der Gasteinträge.
    Hat nicht wirklich einen nutzen - ist halt einfach nett wenn man auf "eintrag 23" antworten kann.
    Nun ist es aber so das ich beim probieren einträge gemacht habe - und die dann auch wieder gelöscht hab.
    Jetzt fängt der erste Eintrag mit "9" an - sieht blöd aus.
    Auch für die Zukunft wird es sich nicht vermeiden lassen das man Einträge löschen muß/möchte.
    Auch da würden dann lücken entstehen bei der chicken aufzählung.

    Kann man das nummerisch korrekt gestalten?

    Gruß

    Ralph

  16. @Ralph:
    Ersetzte mal folgenden Code

    
     
    <?php if ($comments) : ?>
    	

    <?php comments_number('Keine Einträge', 'Ein Eintrag', '% Einträge' );?> im <?php the_title(); ?>

    mit

    
     
    <?php if ($comments) : ?>
    	

    <?php comments_number('Kein Eintrag', 'Ein Eintrag', '% Einträge' );?> im <?php the_title(); ?>

    <?php if ($comment_date->ordering == 'DESC') { $comment_number = ($paged_comments->pager-> get_current_page() - 1) * $paged_comments->pager->get_items_per_page() + count($comments); $comment_delta = -1; } else { $comment_number = 1; $comment_delta = 1; } ?>

    Bin aber auch der Meinung, dass dieses Thema schonmal im WordPress-Forum besprochen wurde. Benutze mal dort die Suche.

    LG Frank

  17. Hallo Frank,
    ich habe die Änderung wie angegeben gemacht - geht leider immer noch nicht.
    Ich habe auch vergessen einen link zu meinen Gaestebuch anzugeben (www.olympia4ever.de/gaestebuch)

    Die "9" steht noch immer stur da - ist ja auch logisch. Ich fordere ja auch auf die comment_ID anzugeben 🙂

    der code der jetzt drin ist sieht so aus:

    <?php if ($comments) : ?>
    	

    <?php comments_number('Kein Eintrag', 'Ein Eintrag', '% Einträge' );?> im <?php the_title(); ?>

    <?php if ($comment_date->ordering == 'DESC') { $comment_number = ($paged_comments->pager-> get_current_page() - 1) * $paged_comments->pager->get_items_per_page() + count($comments); $comment_delta = -1; } else { $comment_number = 1; $comment_delta = 1; } ?>
      <?php foreach ($comments as $comment) : ?>
    1. <?php comment_ID()?>
      <?php comment_author_link() ?> schreibt:
      <?php comment_date('j. F Y') ?>
      <?php comment_text() ?>

  18. Problem gelöst - wie immer am Ende ganz einfach!

    <?php $comment_count=1; ?> 
    <?php echo $comment_count; ?>
    <?php $comment_count++; ?> 

    Und so sieht es dann im ganzen aus:

      <?php $comment_count=1; ?> <?php foreach ($comments as $comment) : ?>
    1. <?php echo $comment_count; ?>
      <?php comment_author_link() ?> schreibt:
      <?php comment_date('j. F Y') ?>
      <?php comment_text() ?>
    2. <?php $comment_count++; ?>
  19. *grrrrrrr*
    jetzt zählt dieses gästebuch die einträge "rückwärts", d.h. der letzte eintrag bekommt die "1".

  20. Besten Dank, aber an welcher stelle?

    function get_comments_number( $post_id = 0 ) {
    	global $wpdb, $comment_count_cache, $id;
    	$post_id = (int) $post_id;
    
    	if ( !$post_id )
    		$post_id = $id;
    
    	if ( !isset($comment_count_cache[$post_id]) )
    		$comment_count_cache[$id] = $wpdb->get_var("SELECT comment_count
     FROM $wpdb->posts WHERE ID = '$post_id'");
    	
    	return apply_filters('get_comments_number', $comment_count_cache[$post_id]);
    }
    
    function comments_number( $zero = 'No Comments', $one = '1 Comment',
     $more = '% Comments', $number = '' ) {
    	global $id, $comment;
    	$number = get_comments_number( $id );
    	if ($number == 0) {
    		$blah = $zero;
    	} elseif ($number == 1) {
    		$blah = $one;
    	} elseif ($number  > 1) {
    		$blah = str_replace('%', $number, $more);
    	}
    	echo apply_filters('comments_number', $blah);
    }
    
  21. Den Tipp von der ersten Antwort hatte und habe ich noch so umgesetzt. Leider ändert sich bei mir dann nichts.
    diesen code habe ich in guestbook.php

            <?php	if ($comment_date->ordering == 'DESC') {
    		    $comment_number = ($paged_comments->pager->
    get_current_page() - 1) * $paged_comments->pager->get_items_per_page() + count($comments);
    		    $comment_delta = -1;
    		} else {
    		    $comment_number = 1;
    		    $comment_delta = 1;
    		}
    	?>
    
  22. Bitte nimm mal in der comment-ductions.php "DESC" raus und lass nur "ORDER BY comment_date" stehen bleibt. Nun ist die Reihenfolge von 1-9 und es sollte eine Nummer mitgeführt werden. Wenn du es in anderer Reihenfolge benötigst mit Nummer, so habe ich derzeit keine Lösung. Mir fehlt es einfach an Zeit, habe schon eine große "ToDo"-Liste, aber ...

    Sorry. Ich hoffe es geht trotzdem, wie du es benötigst.
    LG Frank

  23. Hallo, hab auch noch ein kleines Problem mit meinem Gästebuch. Unter den normalen Gästebuch erscheint immer noch das normale Kommentarfeld. Jeder Eintrag ins Gästebuch wird auch in das Kommentar geschrieben. Kannst ja mal schauen auf meiner website. http://www.farin-online.de.vu unter Gästebuch. Mit dem default_de Theme geht es, aber mit meiner Theme nicht.
    Hab auch schon im comment-functions.php die stelle geändert, aber halfs nicht:
    wp-content/themes/>darknight2.0

  24. Hallo Chris,
    das liegt nicht in der comment-functions.php, du musst in deinem verwendeten Theme schauen. Die php-Seite, die die für deine Darstellung da ist (bei default ist es die single.php) ruft scheinbar immer die comments.php auf. In diesem Fall musst du dir diese php-Seite kopieren, diesen Eintrag durch guestbook.php ersetzen und den Code in der Seite, welchen du jetzt über dein Admin-Panel eingepflegt hast raus nehmen.
    Dann sollte es gehen.

    LG Frank

  25. ich glaub ich versteh nur Bahnhof. Sorry aber ich hab von WordPress usw. gar keine Ahnung. Ich war froh das ich die Site hinbekommen habe :)... muss wohl das Gästebuch entfernen
    gruß chris

  26. Mal ne frage, wie stell ich denn ein, dass jeder ins gästebuch schreiben kann, auch ohne dass er auf der seite registriert ist?

  27. @Klaus:
    Das kannst du in der Admin-Oberfläche von WP einstellen: --> Optionen --> Diskussion --> "Haken bei Erlaube Besuchern Beiträge zu kommentieren".
    LG Frank

  28. Oke, besten dank! aber besteht die möglichkeit, NUR im gästebuch nicht-angemeldeten Usern kommentare zu erlauben? So dass man zum kommentieren von normalen beiträgen angemeldet sein muss.

  29. Nein, da nur die Kommentarfunktion genutzt wird, es ist keine neue Funktion und wird demzufolge auch nicht über eine neue Abfrage im Adminbereich konfiguriert.

    LG Frank

  30. So, ich habe ne Frage die hier per MAIL beantwortet wurde, leider?!
    1. Also, in meinem Gästebuch ist ganz unten immernoch das Formularfeld für "Leave a comment". Nutze Englische WP!
    Das möchte ich weg haben.

    2. Das Eingabefeld für das Gästebuch ist VIEL ZU GROSS, es zerreisst mir die Seite, wie kann ich das ändern?

    Anzusehen auf http://www.bruegge-mann.de

    danke 😉

  31. okay, dankeschön, ich dachte man kann das evtl für jede seite oder kategorie getrennt einstellen.

    ich hätte noch eine frage, ist es denn möglich einzustellen, wieviele gästebucheinträge pro seite angezeigt werden? weil es ist ja irgendwie blöd bei beispielsweise 600 einträgen alle auf einer seite darzustellen

  32. @Torben:
    1. Das liegt am Theme, du musst dir ein neues Template erstellen und dort comments_template gegen gustbook_template austauschen. Dieses in dein Theme laden und dann als Template für die Seite "Gästebuch" auswählen. Den php-Code in der Seite kannst du löschen.

    2. Das ist nur mit CSS machbar. Wenn du aber die Seite so erstellst, wie in 1. beschrieben, wird das Problem sicher nicht mehr bestehen.
    Wenn du Probleme hast, dann sende mir ne mail mit deinem Theme und ich erstellen dir die Seite.

    LG Frank

  33. Moin Frank...
    zu 1. Ich beschäftige mich seit Jahren mit CMS usw aber mit dem WP komm ich nicht ganz klar. warum? keine Ahnung...
    Ich habe also keinen blassen schimmer was du mit 1. meintest.

    zu 2. wie gesagt bastel schon seit langem mit sowas rum aber erst seit 1 Jahr mit CSS, mal sehen ob ich das hinbekomme...

    welche Dateien von meinem Theme brauchst du denn da?

    mfg und danke Torben

  34. Bitte sende mir dein kompletes Theme als zip, dann suche ich mir die entsprechende Seite und kann dir den Rest erläutern, oder du richtest mich auf deinem Blog ein. Mehr Infos sende ich dir dann per eMail, wenn ich mir dein Theme angesehen habe.

    MfG Frank

  35. Kann komischerweise gerade keine Mails senden! Mist alles hier 😉
    http://www.bruegge-mann.de/minimaplus.rar das ist mein Theme 😉
    Danke Dir und kannst mir ja mal dazuschreiben, was du nun geändert hast. Ich muss den mist kapieren, da ich mich ja mit PHP, css und HTML auch auskenne und dieses für meine CMS nutze, kanns ja net so schwer sein durch dieses kleine WP durchzusteigen, heul!

    mfg Torben

  36. Hallo,

    nachdem ich nun schon einige Zeit mit Rumwall herumexperimentiert habe und leider zu keinem vernünftigen Ergebnis gekommen bin habe ich diese super Anleitung entdeckt. Soweit alles Schritt-für-Schritt erledigt, habe nur noch ein kleines Problem was für jemanden mit etwas mehr Erfahrung wahrscheinlich schnell zu lösen ist. Ich verwende das Standard-Theme, doch leider werden die Zeilen des Gästebuchs nicht umgebrochen. Wo kann ich das ändern?
    Link zur Seite: http://www.puppenstudio-lang.de/wp/?page_id=5

    Bestend Dank im voraus

  37. Hallo,
    das musst du eigentlich garnicht, das macht das Template. Das Problem hatten schon andere vor dir. Dort war es jedesmal weg, wenn sie es nochmal sauber eingebaut haben.
    LG Frank

  38. Sorry, WP-Anfänger: Du meinst die guestbook.php? Da habe ich aber nichts geändert. Hab sie auch gerade nochmal neu hochgeladen - leider ohne Erfolg!

  39. Hallo Marc,
    kann das Problem nicht finden. Habe es soeben nochmal unter WP2.0.2 getestet. Läuft wunderbar. Habe jetzt aber noch zwei Templates für das default_de-Theme gemacht. Lade sie noch auf dieser Seite noch.
    Nutze mal eines dieser Templates. Den Code und das php-Plugin in den Seiten ist dann nicht mehr nötig.

  40. Super! Jetzt passts! Nur den unteren Text "Der Beitrag wurde am .. bla bla" muss ich noch wegkriegen! Besten Dank für deine Hilfe!

  41. Sehr schön.
    Ich habe gerade ein Plugin fertig geschrieben, bei dem man keine Dateien von WordPress mehr verändern muss. Es ist eine eigenständiges Plugin. Da du nun gerade erst das Gästebuch eingebaut hast, würde ich trotzdem gern wissen, ob du es über das Wochenende für mich testen kannst?
    Die Install liegt in einer txt-Datei dabei. Den Artikel werde ich wohl erst nächste Woche aufsetzen können, mangels Zeit.
    Würde dir die Dateien mal eben per Mail zukommen lassen.

    LG Frank

  42. Hi Frank,
    also wirklich. Herzlichen Dank für die tolle Arbeit. Gefällt mir echt gut.
    Hab jetzt nur noch den Hintergrund der Einträge farblich, passend zum Rest des Themes geändert

    Viele Grüße
    Jens

  43. Hey!
    Vielen dank fuer das Plugin, ist echt ne geile Sache!
    Habe jedoch ein Problem mit meinem Skin [?]
    Die fuer den "Eintrag" und der Submit - Button sind zu gross und laesst sich auch nicht durch cols="xy" verkleinern.
    Die Textarea & Submit-Button gehen in meine Navigation rein.
    Wie kann ich den Fehler beheben?

    Gruß

    Malte

  44. Hallo Malte,
    das Design musst du per CSS anpassen. Gegebenfalls, aud der comments.php eine guestbook.php machen, damit der Inhalt und die IDs die gleichen sind. Ansonsten sende mir mal den Namen deines Themes und ich schau mal drüber.
    LG Frank

  45. Es lebt *muahahaha*, mein Gästebuch lebt...
    Danke für das Script! Ist soooo toll, dass es nicht das Design verbiegt.

    Gruß
    Andy

  46. Hallo Frank,

    ich habe in Kommentar 41 etwas über ein zu großes Eingabefeld gelesen. Genau dieses Problem tritt auf der Page meiner Freundin auch auf. Leider habt Ihr (Torben und Du) die Lösung durch das versenden von Dateien gelöst.
    Kannst Du mir (von mir aus auch per Mail 🙂 ) sagen welcher CSS Eintrag dazu benötigt / geändert werden muss?

    Gruß
    Theo

  47. Hallo Theo,
    ich habe dazu ein Plugin erstellt, so dass du lieber auf das zugreifen solltest. Wenn du es schon nutzt und noch Hilfe zum Theme benötigst, dann schau mal auf der zugehörigen Theme-Site, ob du dein verwendetes Theme findest.
    Die Dateien, die ich mit Torben ausgetauscht habe, findest du hier: Themes-Dateien.
    LG Frank

Comments are closed.