Benutzer mit benutzerdefinierten Rollen können die Kommentare der anderen Benutzer nicht lesen

Meine Site hat eine benutzerdefinierte Rolle (“Coach”) mit eigenen Fähigkeiten (über map_meta_cap mit einigen eingebauten Rollen). Jeder Benutzer erhält eine Seite auf der Website, die er “besitzt” und bearbeiten kann (über einen Front-End-Editor).

Jede Seite hat Kommentare (umbenannt in “Bewertungen”).

Dieses System funktioniert ziemlich gut, abgesehen von einer Sache: WordPress wird keine Kommentare auf Seiten zurückgeben, die dieser Benutzer (mit der Rolle “coach”) nicht “besitzt”.

Ich bekomme Kommentare mit get_comments() , und es gibt genau das zurück, was ich erwarte, wenn ich get_comments() , als Administrator angemeldet bin oder mich als ‘Coach’ angemeldet habe und die Seite des Trainers betrachte. Wenn get_comments() als “Coach” angemeldet ist und eine andere Seite get_comments() gibt es ein leeres Array zurück.

Dies scheint ein Rollen- / Fähigkeits-Problem zu sein, aber ich habe Mühe, genau festzuhalten, was passiert. Ich habe mit dem Hinzufügen verschiedener Fähigkeiten zur Trainerrolle gespielt, aber ohne Glück.

Hier ist der Code, mit dem ich Kommentare zurückgebe:

 $testimonials = get_comments( array( 'post_id' => $coach_post_ID, 'status' => 'approve', ) ); 

Running var_dump( $testimonials ); Gibt ein leeres Array zurück, es sei denn, ich bin als ‘Coach’, als Administrator oder vollständig ausgeloggt.

Die Coaches haben alle öffentlichen read_coach aktiviert ( read und read_coach ) und können ansonsten alle Inhalte auf anderen Coach-Seiten sehen.

Ich freue mich, Ihnen alle Informationen zur Verfügung zu stellen, die Sie zur Diagnose des Problems benötigen. Danke im Voraus!

Solutions Collecting From Web of "Benutzer mit benutzerdefinierten Rollen können die Kommentare der anderen Benutzer nicht lesen"

Ich hatte das gleiche Problem, Hauptbenutzer haben die Beitragsrolle und ein einfaches Sidebar-Kommentar-Sidebar-Widget funktionierte nicht, wenn ich mich anmeldete! Seltsam. Ich habe es mit einigen SQL getriggers:

 function getLatestComments ( $postid ) { global $wpdb; $sql = "SELECT * from $wpdb->comments WHERE comment_post_ID = $postid AND comment_approved = 1 ORDER BY comment_ID DESC"; return $wpdb->get_results($sql); } 

Ich habe das anstelle von get_comments verwendet. Sie können die SQL ändern und anpassen wie erforderlich.