Filtern der Admin-Kommentarliste, um nur Kommentare des aktuellen Benutzers anzuzeigen?

10

Auf der Seite "Kommentare" ( /wp-admin/edit-comments.php) kann jeder angemeldete Benutzer alle Site-Kommentare sehen.
Kommentarseite


Ich möchte, dass die Benutzer nur seine eigenen Kommentare und die Kommentare sehen, die in ihren Beiträgen verbleiben.

Wie kann ich das filtern?

Moonvader
quelle

Antworten:

9

Eine dieser drei Möglichkeiten hilft Ihnen:

//Before getting the comments, on the WP_Comment_Query object for each comment
add_action('pre_get_comments', 'wpse56652_filt_comm');

//Applied on the comments SQL Query, you can modify the 'Where' part of the query
add_filter('comments_clauses', 'wpse56652_filt_comm');

//After the comments are fetched, you can modify the comments array
add_filter('the_comments', 'wpse56652_filt_comm');

function wpse56652_filt_comm($param) {
    //access the current user
    global $current_user;
    get_currentuserinfo();

    //current users id = $current_user->ID;

    //Current users posts, check get_posts params to change as per your need
    $user_posts = get_posts(array('author' => $current_user->ID, 'posts_per_page' => -1));

    echo '<pre>';
    print_r($param);
    echo '</pre>';

    return $param;
}

Außerdem können Sie global $pagenowdamit sicherstellen, dass der Code nur auf dieser Seite ausgeführt wird.

Tut mir leid, dass es mir heute irgendwie schlecht geht, also konnte ich kein Beispiel aufschreiben! ;)

Bearbeiten:

/**
 * Show only the Comments MADE BY the current logged user
 * and the Comments MADE TO his/hers posts.
 * Runs only for the Author role.
 */

add_filter('the_comments', 'wpse56652_filter_comments');

function wpse56652_filter_comments($comments){
    global $pagenow;
    global $user_ID;
    get_currentuserinfo();
    if($pagenow == 'edit-comments.php' && current_user_can('author')){
        foreach($comments as $i => $comment){
            $the_post = get_post($comment->comment_post_ID);
            if($comment->user_id != $user_ID  && $the_post->post_author != $user_ID)
                unset($comments[$i]);
        }
    }
    return $comments;
}
Rutwick Gangurde
quelle
Vielen Dank für die Antwort - erst vor wenigen Stunden habe ich einen Artikel zur Lösung dieses Problems für Beiträge in Ihrem Blog gefunden! Ich finde sogar Parameter für Kommentare, aber ich weiß nicht, wie ich die aktuelle protokollierte Benutzer-ID festlegen soll. Wenn ich nur seine Kommentare anzeigen möchte, kann ich seine ID verwenden, aber ich möchte auch Kommentare zu seinen Posts anzeigen. Wie geht das?
Moonvader
Bitte! Überprüfen Sie die Antwort jetzt, ich habe es aktualisiert.
Rutwick Gangurde
Jetzt werden alle Kommentarparameter auf der Seite wp-admin / edit-comment.php angezeigt - aber ich kann immer noch alle Kommentare sehen (
moonvader
Das liegt daran, dass Sie die Kommentare filtern müssen! Ich habe das print_r zum Testen gesetzt!
Rutwick Gangurde
muss diese Filterung innerhalb der Funktion wpse56652_filt_comm erfolgen? Können Sie mir ein Beispiel zeigen, wie nur Kommentare von Benutzern mit der ID = 4 angezeigt werden?
Moonvader