Фільтрування списку коментарів адміністратора, щоб відображати лише коментарі від поточного користувача?


10

На сторінці коментарів ( /wp-admin/edit-comments.php) кожен зареєстрований користувач може побачити всі коментарі сайту.
сторінка коментарів


Я хотів би, щоб користувачі бачили лише його власні коментарі та коментарі, залишені до його публікацій.

Як я можу це відфільтрувати?

Відповіді:


9

Будь-який із цих 3 допоможе вам:

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

Крім того, ви можете global $pagenowпереконатися, що код працює лише на цій сторінці.

Вибачте, я сьогодні неприємний, тому не зміг записати приклад! ;)

Редагувати:

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

дякую за відповідь - всього кілька годин тому я знайшов статтю для вирішення такої проблеми для публікацій у вашому блозі! Я навіть знаходжу парами для коментарів, але я не знаю, як встановити поточний ідентифікований ідентифікатор користувача. якщо я хочу просто показувати лише його коментарі, я можу використовувати його посвідчення, але я також хочу показувати коментарі до його дописів. Як це можна зробити?
moonvader

Ласкаво просимо! Перевірте відповідь зараз, я її оновив.
Rutwick Gangurde

тепер він показує всі параметри коментарів на сторінці wp-admin / edit-comments.php - але я все ще бачу всі коментарі (
moonvader

Це тому, що ви повинні фільтрувати коментарі! Я поставив цей print_r для тестування заради!
Рутвік Гангурде

ця фільтрація повинна бути виконана у функції wpse56652_filt_comm? чи можете ви показати мені приклад, як показувати лише коментарі користувача з id = 4?
moonvader
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.