Ich werde erklären, was ich erreichen will.
Ich hätte gerne regelmäßige Kommentare ohne Thread (flach / klassisch) mit einem Antwortlink zu jedem Kommentar. Wenn jemand auf einen Kommentar antwortet, wird der Antwortkommentar wie in den Standardkommentaren ohne Thread oben (oder unten) als letzter Kommentar angezeigt. Im Gegensatz zum Standardkommentar ohne Thread sollte in der Antwort jedoch ein Link zu angezeigt werden der ursprüngliche Kommentar / Autor.
Im WordPress-Forum wird eine Lösung vorgeschlagen:
http://wordpress.org/support/topic/reply-to-link-for-chronological-non-threaded-comments
Ich bekomme es einfach nicht zum Laufen. Ich bin nicht sicher, in welchen Dateien das Poster die verschiedenen Codeteile platziert. Ich habe versucht, den Code zu verwenden und eine Funktion an comment_post anzuhängen:
add_action('comment_post', 'print_reply_link', 10, 2);
function print_reply_link( $comment_id, $approved ){
if( $approved ){
$comment = get_comment( $comment_id );
if ( $comment->comment_parent ) {
$parent = get_comment( $comment->comment_parent );
$parent_link = esc_url( get_comment_link( $comment->comment_parent ) );
printf( ' in reply to <a href="%1$s">%2$s</a>', $parent_link, $parent->comment_author );
}
}
}
Dies gab eine leere Seite mit "als Antwort auf den Autorennamen " zurück. Nach dem erneuten Laden des Beitrags wird ein Antwortkommentar korrekt angezeigt, jedoch ohne Link zum ursprünglichen Kommentar
Meine Codierungsfähigkeiten sind wirklich sehr grundlegend, daher habe ich keine gute Idee, wie ich vorgehen soll. Wäre sehr dankbar für jede Hilfe.
href
in dera
die ‚Antwort to` gemäß dem‚Inspect Element‘Werkzeug in Chrome (oder in Ihrem Browser der Wahl) folgt?s
in%1$s
bedeutet, dass das Argument als Zeichenfolge behandelt und dargestellt wird. Dies wird im PHP-Handbuch für die Sprintf-Funktion ausführlich erklärt: php.net/manual/en/function.sprintf.phpAntworten:
Dies ist meine Lösung und nicht die in den WordPress-Foren vorgeschlagene Lösung. Es stellt sich als ziemlich einfach heraus, erfordert jedoch einige Schritte.
1) Gehen Sie zu wp-admin-> Einstellungen-> Diskussion und deaktivieren Sie Thread-Kommentare. Dadurch wird das gewünschte Threading deaktiviert, aber es wird auch nicht mehr möglich sein, auf einen bestimmten Kommentar zu "antworten". Das müssen wir zurückstellen.
2) Fügen Sie das folgende Skript zur Datei functions.php Ihres Themas oder zu einem Plugin hinzu.
3) Das Drucken der Kommentare erfolgt durch einen Rückruf an wp_list_comments . TwentyEleven verwendet die Funktion
twentyeleven_comment()
in seinerfunctions.php
. Wenn Ihr Thema keinen Rückruf hat, müssen Sie einen erstellen. Standardmäßig wird der Inhalt der start_el-Methode der Walker_Comment-Klasse in "wp-includes / comment-template.php" verwendet. Kopieren Sie das oder kopieren Sie den Rückruf des Themas und benennen Sie die Funktion in umfake_threaded_comment
.3) Suchen Sie die Funktion wp_list_comments in Ihrem Thema
comments.php
und ändern Sie den Rückruf. Es sollte so aussehen:4) Jetzt werden wir ein wenig schummeln. In diesem Rückruf 'fake_threaded_comment' sollte die Funktion comment_reply_link aufgerufen werden. Wir müssen es so bearbeiten, dass wir fest codierte Argumente 'depth' und 'max_depth' übergeben. Wir setzen 'Tiefe' auf 1 und max_depth auf 2. Dadurch erhalten wir unseren "Antwort" -Button / Link zurück.
5) Richten Sie den Link zum übergeordneten Kommentar ein. Neben der Rückruffunktion haben Sie möglicherweise Verweise auf bemerkt
$comment
.$comment->comment_parent
ist die ID des beantworteten Kommentars undget_comment_link($comment->comment_parent)
gibt die URL des übergeordneten Kommentars an (nicht das vollständige Anker-Markup).get_comment($comment->comment_parent)
erhält die übergeordneten Kommentardaten. Also so etwas wie ...Das ist es. Sie können jetzt bestimmte Kommentare kommentieren, aber sobald sie veröffentlicht wurden, wird der Kommentar je nach Ladereihenfolge am Ende oder am Anfang der Kommentarliste angezeigt.
Getestet mit TwentyEleven unter WordPress 3.4.1 (etwas veraltet, aber es ist bereits auf meinem Entwicklungsserver). Ich bin mir sicher, dass es Dinge gibt, die Themen oder Plugins tun könnten, um dies zu verhindern, aber ich glaube nicht, dass ein gut erzogenes Thema oder Plugin dies verhindern würde.
Das ist meine gute Tat für diesen Tag. Bitte lassen Sie mich wissen, wenn etwas schief geht.
quelle