it-swarm.com.de

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

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


Ich möchte, dass die Benutzer nur ihre eigenen Kommentare und die Kommentare sehen, die für ihre Beiträge übrig bleiben.

Wie kann ich das filtern?

10
moonvader

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 mit global $pagenow sicherstellen, dass der Code nur auf dieser Seite ausgeführt wird.

Tut mir leid, dass es mir heute irgendwie nicht gut 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;
}
9