Filtrando a lista de comentários do administrador para mostrar apenas comentários do usuário atual?

10

Na página Comentários ( /wp-admin/edit-comments.php), todo usuário conectado pode ver todos os comentários do site.
página de comentários


Gostaria que os usuários vissem apenas seus próprios comentários e os comentários deixados em suas postagens.

Como posso filtrar isso?

moonvader
fonte

Respostas:

9

Um destes 3 ajudará você a:

//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;
}

Além disso, você pode usar global $pagenowpara garantir que o código seja executado apenas nesta página.

Desculpe, estou meio doente hoje, então não pude escrever um exemplo! ;)

Editar:

/**
 * 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
fonte
obrigado pela resposta - apenas algumas horas atrás, encontrei um artigo para resolver esse problema para as postagens em seu blog! Até encontro parâmetros para comentários, mas não sei como definir o ID de usuário registrado atual. se eu quiser apenas mostrar apenas os comentários dele, posso usar o ID dele, mas também quero mostrar comentários nas postagens dele. Como pode ser feito?
moonvader
De nada! Verifique a resposta agora, eu a atualizei.
Rutwick Gangurde
agora ele está mostrando todos os comentário params em página wp-admin / edit-comments.php - mas eu ainda pode ver todos os comentários (
moonvader
Isso porque você precisa filtrar os comentários! Eu coloquei esse print_r para testar!
Rutwick Gangurde
essa filtragem precisa ser feita dentro da função wpse56652_filt_comm? você pode me mostrar um exemplo de como mostrar apenas comentários do usuário com id = 4?
moonvader