WordPress – Verwenden Sie das Kommentarsystem außerhalb von Seiten und Beiträgen

Lesezeit: 6 Minuten

Benutzer-Avatar
Wahl

also verwende ich derzeit Hülsen um einige individuelle Seiten für ein Protokoll zu erstellen, die mit benutzerdefinierten Dingen gefüllt sind.

Jetzt möchte ich das Kommentarsystem für jede dieser Seiten verwenden, zB:

mydomain.com/podpages/page1
mydomain.com/podpages/page2
mydomain.com/podpages/page3

Dies sind nicht mit WordPress erstellte Seiten also einfach hinzufügen <?php comments_template(); ?> funktioniert nicht.

irgendwelche Ideen, wie man dieses Problem löst? vielen Dank im Voraus

Bitte hinterlassen Sie einen Kommentar, wenn etwas unklar ist 🙂

  • Das geht meines Wissens nach nicht. Es hat damit zu tun, wie WordPress Dinge in der Datenbank speichert. Sie verwenden das falsche Werkzeug für den Job. Versuchen Sie etwas wie Disqus oder Echo.

    – Mattbasta

    26. Mai 2010 um 17:25 Uhr

  • keine Chance. mein kommentarsystem in diesem blog ist so modifiziert, dass ich das normale kommentarsystem von wordpress verwenden muss

    – Wahl

    31. Mai 2010 um 7:00 Uhr

  • Ich sehe keinen Grund, mich an das Kommentarsystem von WordPress zu halten, wenn es sich um Kommentare auf separaten Seiten des Blogs handelt. Wenn Sie sich gegen die WP-Datenbank von Benutzern authentifizieren möchten, ist dies eine völlig andere Frage und kann einfach durchgeführt werden. Sie können ein neues Kommentarsystem bestellen oder selbst programmieren.

    – Vladislav Rastrusny

    31. Mai 2010 um 11:11 Uhr

  • Das aktuelle Kommentarsystem hat spezielle Felder, authentifiziert sich bei den WP-Benutzern und einem damit verknüpften Forensystem. Das ist der Grund, warum ich das Wp-Kommentar-System verwenden würde. Außerdem möchte ich die Möglichkeit haben, die Kommentare im Backend von WP zu verwalten.

    – Wahl

    31. Mai 2010 um 12:41 Uhr

  • Ist es wirklich die ganze Arbeit wert, WP zu hacken? Gibt es kein Disqus-Plugin für WP, das die Kommentare in der Datenbank speichert? Ist das kein Feature in WP 3.0?

    – Kevin

    2. Juni 2010 um 17:00 Uhr

Benutzer-Avatar
Der tote Sanitäter

Wenn ein Kommentar in der WordPress-Datenbank gespeichert wird, wird auch die ID des Beitrags (oder der Seite), auf die sich der Kommentar bezieht, gespeichert.

Das Problem ist, dass Sie versuchen, Kommentare mit WordPress zu speichern, aber für eine Seite, die es eigentlich nicht tut kennt um.

Also, wie wäre es, wenn wir eine erstellen WordPress Seite für jeden real Seite, sondern lediglich als Darstellungdamit Ihre realen Seiten und WordPress eine gemeinsame Grundlage für die Zusammenarbeit haben.

Der Plan hier ist also;

  • Laden Sie WordPress im Hintergrund auf jeder der „echten“ Seiten.
  • Prüfen Sie, ob für die „echte“ Seite bereits eine WordPress-Seitendarstellung vorhanden ist
  • Wenn dies nicht der Fall ist, erstellen Sie es, dann und dort
  • Bringen Sie WordPress dazu, zu glauben, dass wir tatsächlich die Darstellung sehen
  • Verwenden Sie weiterhin alle Funktionen und „Template-Tags“ von WP wie gewohnt

Dieser Code sollte sich irgendwo am Anfang der Vorlagendatei befinden, die zum Rendern Ihrer „echten“ Seiten verwendet wird;

include ('../path/to/wp-load.php');

// remove query string from request
$request = preg_replace('#\?.*$#', '', $_SERVER['REQUEST_URI']);

// try and get the page name from the URI
preg_match('#podpages/([a-z0-9_-]+)#', $matches);

if ($matches && isset($matches[1])) {
    $pagename = $matches[1];

    // try and find the WP representation page
    $query = new WP_Query(array('pagename' => $pagename));

    if (!$query->have_posts()) {
        // no WP page exists yet, so create one
        $id = wp_insert_post(array(
            'post_title' => $pagename,
            'post_type' => 'page',
            'post_status' => 'publish',
            'post_name' => $pagename
        ));

        if (!$id)
            do_something(); // something went wrong
    }

    // this sets up the main WordPress query
    // from now on, WordPress thinks you're viewing the representation page       
}

AKTUALISIEREN

Ich kann nicht glauben, dass ich so dumm war. Unten sollte der aktuelle Code von innen nach außen ersetzt werden if;

// try and find the WP representation page - post_type IS required
$query = new WP_Query(array('name' => $pagename, 'post_type' => 'page'));

if (!$query->have_posts()) {
    // no WP page exists yet, so create one
    $id = wp_insert_post(array(
        'post_title' => $pagename,
        'post_type' => 'page',
        'post_status' => 'publish',
        'post_name' => $pagename,
        'post_author' => 1, // failsafe
        'post_content' => 'wp_insert_post needs content to complete'
    ));
}

// this sets up the main WordPress query
// from now on, WordPress thinks you're viewing the representation page
// post_type is a must!
wp(array('name' => $pagename, 'post_type' => 'page'));

// set up post
the_post(); 

PS Ich denke, mit der query_var name Über pagename ist besser geeignet – es fragt den Slug ab und nicht den Slug-‘Pfad’.

Sie müssen auch entweder eine Eingabe innerhalb des Formulars mit name redirect_to und einen Wert der URL, zu der Sie umleiten möchten, oderfiltern Sie die Weiterleitung mit einer angehängten Funktion comment_post_redirectdie die richtige URL zurückgibt.

  • Das Hinzufügen einer Seite funktioniert also, aber die Kommentarvorlage wird nicht angezeigt. ich denke wp(array(‘pagename’ => $pagename)); hat immer noch keine wirkung 🙁

    – Wahl

    10. Juni 2010 um 12:02 Uhr

  • Okay, Dumping von $wp sagt, dass der Seitenname gesetzt ist, aber Kommentare werden immer noch nicht angezeigt, auch andere Dinge wie Permalink sollten jetzt funktionieren, aber sie tun es nicht, oder?

    – Wahl

    10. Juni 2010 um 12:40 Uhr

  • ‘post_type’ => ‘post’ funktioniert besser, aber es wäre 1000 Mal besser, sie als Seiten zu haben

    – Wahl

    10. Juni 2010 um 12:54 Uhr

  • Okay, bleib bei dem, was ich ursprünglich gepostet habe, aber ersetze das wp() mit anrufen $wp_query = new WP_Query(array('pagename' => $pagename)). Wenn das fehlschlägt, globalisiere $wp_query kurz vorher mit global $wp_query;

    – Der tote Sanitäter

    10. Juni 2010 um 14:08 Uhr

  • Nein, da steht “Kommentare sind geschlossen”. rückt näher. Das Ablegen der Abfrage gibt mir die richtigen Dinge. aber immer noch das globale $post ist nicht gesetzt, aber ich denke, es wird benötigt, oder? irgendeine Idee ? 🙁

    – Wahl

    10. Juni 2010 um 15:17 Uhr

hinzufügen

require('/path/to/wp-blog-header.php');

um die wp-Dateien einzubinden. Dies sollte Ihnen alle Funktionen/Daten geben, die Sie benötigen.

  • ja das habe ich gemacht. aber comments_template(); funktioniert normalerweise nur innerhalb eines einzelnen Blogs oder Seitenbeitrags.

    – Wahl

    26. Mai 2010 um 15:11 Uhr

  • wahr wahr, Sie müssen möglicherweise jede Seite in Ihre Beitragstabelle einfügen und die Funktion comments_table anpassen, um ihr die ID der Seite zu geben

    – Galen

    26. Mai 2010 um 16:16 Uhr

Können Sie in WordPress Seiten erstellen, die Ihre Protokolldaten anzeigen? Möglicherweise benötigen Sie dafür eine neue Vorlage. WordPress hat dann etwas, mit dem die Kommentare verbunden werden können.

Benutzer-Avatar
Pekka

Braucht man dafür WordPress? Wenn nicht, hilft vielleicht etwas in dieser SO-Frage: Unauffällige, selbst gehostete Kommentarfunktion zum Einfügen in bestehende Webseiten

Benutzer-Avatar
ShoX

Versehen Sie einfach den WordPress-Kommentarteil mit einer neuen ID – beginnen Sie mit etwas, das Ihre üblichen Posts niemals erreichen werden (100.000+ sind Ihre Seiten, dh)

Ich weiß nicht genau, ob es in WordPress eine Funktion ist (saveComment dh), aber wenn es so ist, verwenden Sie es einfach auf Ihrer Seite mit der benutzerdefinierten ID. Das Kommentar-Formular müssen Sie jedoch selbst einfügen.

Und vergessen Sie nicht, die Abfrage zu ändern, die die Nachrichteneinträge erhält, dass IDs über 100.000 keine Einträge sind.

Oder Sie können Ihr eigenes Template schreiben, das den Standard-Worpress-Zeug mit IDs < 100.000 oder Ihre Seiten anzeigt.

Zusammenfassend sollte es nicht sehr schwierig sein.

ps: Wenn du nur den WordPress-Login benutzen willst, dann benutze ein beliebiges Kommentarsystem oder mach dir dein eigenes (es ist eine 1-Stunden-Sache) und authentifiziere / benutze die Worpress-Session.

1311560cookie-checkWordPress – Verwenden Sie das Kommentarsystem außerhalb von Seiten und Beiträgen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy