Ich bin relativ neu in WordPress und Codierung und arbeite an einer Site, auf der die Benutzer Kommentare für bestimmte Posts hinterlassen müssen. Die Person, für die ich die Site erstelle, möchte jedoch, dass der Benutzer nur die Kommentare sehen kann habe für diese spezifischen Beiträge geschrieben und keine Kommentare von anderen Usern.
Ich habe schon eine Weile gesucht und konnte keine Lösung finden, die zu funktionieren scheint. Gibt es eine Möglichkeit, dies zum Laufen zu bringen, die für mich einfach zu implementieren ist? Jede Hilfe wäre sehr dankbar.
Vielen Dank!
Angenommen, Ihre Kommentarautoren sollen registrierte Benutzer sein, ist die einfachste Möglichkeit, die Abfragevariable pre_get_comments
object 's WP_Comment_Query
mit einer user_id
action hook so zu ändern, dass die Abfrage nur Kommentare aus der aktuellen zurückgibt Nutzer:
function wpse262203_restrict_comment_views( $comments_query ) {
// Don't interfere with comment results in the dashboard
if( is_admin() )
return;
$current_user = wp_get_current_user(); // Get the current user
if( $current_user instanceof WP_User && is_user_logged_in() ) {
// The visitor is logged in as a WordPress user...
// If they're an administrator, don't filter the comments
if( in_array( 'administrator', $current_user->roles ) )
return;
// Otherwise, restrict queried comments to those authored by this user.
$comments_query->query_vars[ 'user_id' ] = $current_user->ID;
}
else {
// The visitor isn't logged in - make sure no comments are queried.
$comments_query->query_vars[ 'comment__in' ] = array(0);
}
}
add_action( 'pre_get_comments', 'wpse262203_restrict_comment_views' );
Sie können anstelle von/auch current_user_can()
verwenden, um nach Benutzerrollen zu suchen um festzulegen, nach welchen Kommentaren gefiltert wird.
Sie können auch anonymes Kommentieren unterstützen, indem Sie wp_get_current_commenter()
in Verbindung mit dem Argument author_email
WP_Comment_Query
verwenden. Dies ist jedoch nicht besonders zuverlässig oder sicher. Anonyme Kommentator-ID-Daten werden in Cookies gespeichert. Dies bedeutet, dass der Benutzer sie löschen kann oder die Cookies verfallen können. In diesem Fall kann der Benutzer seine Kommentare erst anzeigen, wenn er eine andere veröffentlicht. Die Anmeldeinformationen können auch leicht gefälscht werden. Erfahrene Besucher können möglicherweise auf Kommentare anderer Benutzer zugreifen.
Nach weiteren Untersuchungen schlugen meine früheren Versuche, WP_Comment_Query::set()
zum Ändern von Abfragevariablen zu verwenden, fehl, da WP_Comment_Query
im Gegensatz zu WP_Query
keine set()
-Methode besitzt (siehe ticket # 39120 ). Es gibt jedoch eine __call()
"Magic Method" , die den Aufruf der nicht existierenden Methode set()
abfängt und false zurückgibt, wodurch der Fehler verhindert wird, den PHP normalerweise ausgelöst hätte und mich verwirrt zu keinem Ende.