WordPress как на ладони
Официальная конференция по WordPress в Moскве 18-19 августа, начало в 9:00 wordpress jino

Сортируемая колонка количества комментариев пользователя в админ-панели

Давно пользуюсь информацией с вашего сайта и ни у кого другого уже не надеюсь найти информацию по такому вопросу:

хочется в колонке со списком пользователей видеть количество комментариев каждого (чтобы вернее отсеивать ботов)

я нашел способ http://seobid.net/plagin-clean-up-users-chistim-bazu-polzovatelej/

но, видимо, со сменой версии вордпресс (WordPress 4.0.1) файлы изменились и теперь таких строчек в указанных файлах нет. Как выполнить задуманное?

второй момент: поставил форум bbpress и пришлось открыть регистрацию на WP. полезли боты в огромном количестве (откуда и взялся первый вопрос). Пробовал каптчей - они легко обходят все известные. Помогла только смена id=user_login на другое. может вам полезно будет

1
Гость
3.4 года назад
  • 2
    Kama6672
    /* 
    Колонка комментариев на странице пользователей в админке 
    v 1.0
    */
    ## создаем новую колонку
    add_filter('manage_users_columns', 'add_users_comm_column', 4);
    function add_users_comm_column( $columns ){
    	$columns['comments'] = 'Комм.';
    	$columns['register_date'] = 'Дата реги'; // добавляет дату реги
    	//unset( $columns['posts'] ); // удаляет колонку посты
    
    	return $columns;
    }
    
    ## заполняем колонку данными
    add_filter('manage_users_custom_column', 'fill_users_comm_column', 5, 3); // wp-admin/includes/class-wp-posts-list-table.php
    function fill_users_comm_column( $foo, $column_name, $user_id ) {
    	global $wpdb;
    
    	$userdata = get_userdata( $user_id );
    
    	if( $column_name == 'comments' ){
    		$count = get_comments( array('user_id'=>$userdata->ID, 'count'=>true) );
    		$out = $count ? '<a href="'. admin_url('/edit-comments.php?s='. $userdata->user_login) .'">'. $count .'</a>' : '0';
    	}
    	elseif( $column_name == 'register_date' ){
    		$out = mysql2date('j M Y', $userdata->user_registered );
    	}
    
    	return $out;
    }
    
    // добавляем возможность сортировать колонку
    add_filter('manage_users_sortable_columns', 'add_users_comm_sortable_column');
    function add_users_comm_sortable_column($sortable_columns){
    	$sortable_columns['register_date'] = 'register_date';
    	$sortable_columns['comments'] = 'comments';
    
    	return $sortable_columns;
    }
    
    // сортировка колонки
    add_action('pre_user_query', 'add_users_comm_sort_query');
    function add_users_comm_sort_query( $user_query ){
    	global $wpdb, $current_screen;
    
    	if ( $current_screen->id != 'users' ) return;
    
    	$vars = $user_query->query_vars;
    
    	if( $vars['orderby'] == 'register_date' ){
    		$user_query->query_orderby = ' ORDER BY user_registered '. $vars['order'];
    	} 
    	elseif( $vars['orderby'] == 'comments' ){
    		// SELECT * FROM `wp_users` LEFT JOIN (SELECT count(comment_ID) as comm_count, user_id FROM `wp_comments` GROUP BY user_id) as comm ON ( wp_users.ID = comm.user_id ) ORDER BY comm_count ASC
    		$user_query->query_from    .= " LEFT JOIN (SELECT count(comment_ID) as comm_count, user_id FROM $wpdb->comments GROUP BY user_id) as comm ON ( ID = comm.user_id )";
    		$user_query->query_orderby = ' ORDER BY comm_count '. $vars['order'];
    	} 
    
    }
    Дмитрий 3.4 года назад

    Kama, у вас как всегда лучший вариант smile Но вопрос сортировки остался. Иначе как ботов с нулевыми комментариями чистить буду?

    Дмитрий 3.4 года назад

    Теперь сортируется, но тем у кого камментов нет - ставит 1 коммент

    Дмитрий 3.4 года назад

    у некоторых показывает по 2 и более комментария, но если нажать по ссылке, то ни одного не находится. А у некоторых нормально работает.

    Kama 3.4 года назад

    Дополнил код, только что. Там все не так просто оказалось. У меня на этом блоге тоже такой функционал стоит, только еще есть ключ активации, дата последнего захода... Себе тоже добавил возможность сортировки по комментам.

    Kama 3.4 года назад

    Щас, еще пошаманю

    Дмитрий 3.4 года назад

    сейчас ищет по имени и соотв. пользователя "иван" находит во всех ипостасях. Лучше б по e-mail

    Kama 3.4 года назад

    Подправил, то что по ссылке не совпадает колличество - это как бы номрально, там поиск WordPress работает /edit-comments.php?s=penuel82 почему-то WP не находит или находит лишние. Это поправлять доп. код нужен, лишняя работа, никому не нужная...

    Чтобы по email искал замените '/edit-comments.php?s='. $userdata->user_login на user_email...

    Kama 3.4 года назад

    Еще такой вопрос. Почему не отмечаете галкой что ответ пользователя был дан правильно, не повышаете рейтинг ответа? Не работает у меня на сайте что ли что-то?

    Дмитрий 3.4 года назад

    пытался отметить ответ, а мне выскочила надпись про регистрацию (регистрировался когда-то, но сразу не вспомню пароль). Отложил нажатие кнопки на потом. нажму обязательно - хороший ответ

    kenji 3.4 года назад

    стрелочку вверх нажать не дал и после регистрации - не хватает "репутации".
    нажал на "галочку", чтобы это ни значило (нет хинта, что это)
    Подсчет комментариев теперь работает более понятно (после замены на user_email). Теперь у тех у кого нет комментариев имеют на счетчике 0.
    Правда некоторые комментарии все равно по ссылке не находятся, но там они, видимо, регистрировались по имени пользователя или еще как (неважно).
    Главное скрипт работает, все сортируется - не сомневался, что именно у вас найду самый правильный ответ.
    Собственно кроме разрозренных кусков на западных сайтах, есть только ваш сайт, который в этом деле может помочь. Желаю Вам и Вашему проекту wp-kama долгих и долгих лет жизни! Вы мне уже второй раз лично помогаете и несколько раз брал у вас суперполезный код.

    P.S. проявлю наглость и спрошу: а как сделать +1 -1, в комментариях, как у вас. В ближайшее время готов микро-спонсировать данный вопрос.
    P.P.S. "Чайниковский" рецепт. Боролся со спам-регистрациями. Помогла только замена имен полей вместо user_login на другие. Все известные каптчи пробивают в течение дня.

    kenji 3.4 года назад

    еще немного проанализировал то, что получилось в колонке с комментариями. Комментарии некоторых пользователей не находит. Почему - непонятно. Стоит ноль.

    Kama 3.4 года назад

    Если поймете почему не находит, дайте знать. Скорее всего, потому что коммент оставлен не залогинившить, как просто посетитель с одинаковым email...

    Дмитрий 3.4 года назад

    у меня нельзя оставить комментарий не залогинившись.

    kenji 3.1 года назад

    обновился до WordPress 4.0.5 - перестала добавляться колонка. Что-то они поменяли..

    Комментировать
  • 1
    stepan1187 cайт: www.weblancer.net/users/stepanko/?affili...

    Вот решение на Ваш вопрос
    http://themeforest.net/forums/thread/help-with-manage_users_columns-in-wordpress/50906

    Там похожая ситуация, выводится метаполе юзера.
    Вам же нужно выводить комментарии.
    Как получить комментарии пользователя - есть по ссылке, что Вы скинули в вопросе.

    Дмитрий 3.4 года назад

    Спасибо, получилось!
    только не понял, как сделать колонку сортируемой!

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация

Дом изысканной мужской одежды

Недорогие смокинги мужские купить Дом изысканной мужской одежды.

www.magicwedding.ru