Intereting Posts
Как изменить путь URL-адреса изображения из папки плагина wordpress в папку темы? Как обращаться с поддержкой для нетехнического клиента Объединение нескольких пользовательских таксономии пользователей в одном URL-адресе Сравнение Meta с датой (хранимой как строка) не работает С помощью WordPress + Visual Composer, как ограничить пользователя изменением содержимого на странице? Улучшение работы плагина Подгонка изображения к размеру холста эскиза Как добавить данные в пользовательское поле репитера через wp api Есть ли объект информации в блоге? Ссылка add_action класс Внешняя интеграция системы с wordpress Могу ли я использовать WP для создания многосайтового импорта сообщений из 3 старых веб-сайтов WP? Добавить URL-запрос к следующей записи в пользовательском запросе Заказ изображений галереи без использования короткого кода в теме Где сохранена информация о галерее изображений?

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

function comments_shortcode($atts) { $current_user = wp_get_current_user(); . . . extract( shortcode_atts( array( 'id' => '' ), $atts ) ); $num = 0; $post_id = $id; $queried_post = get_post($post_id); $cc = $queried_post->comment_count; if( $cc == $num || $cc > 1 ) : $cc = $cc.' Comments'; else : $cc = $cc.' Comment'; endif; $permalink = get_permalink($post_id); return '<a href="'. $permalink . '" class="comments_link">' . $cc . '</a>'; } add_shortcode('comments', 'comments_shortcode'); 

Эта функция создает короткий код для получения номера на комментариях сообщения. Как я могу отфильтровать это и получить количество комментариев по роли пользователя?

Благодарю.

Solutions Collecting From Web of "Создание короткого кода отфильтрованного количества комментариев по роли пользователя"

В приведенном ниже коде добавляются подсчеты для ролей пользователей. Это очень хорошо прокомментировано, чтобы объяснить, что происходит. Он должен дать вам хорошую отправную точку для дальнейшей настройки (возможно, вы хотите скрыть 0 счетчиков, изменить вывод HTML и т. Д.).

 function comments_shortcode($atts) { $current_user = wp_get_current_user(); extract( shortcode_atts( array( 'id' => '' ), $atts ) ); $num = 0; $post_id = $id; $queried_post = get_post($post_id); $cc = $queried_post->comment_count; if( $cc == $num || $cc > 1 ) : $cc = $cc.' Comments'; else : $cc = $cc.' Comment'; endif; $permalink = get_permalink($post_id); // Get all approved comments for this post. $args = array( 'status' => 'approve', 'post_id' => get_the_id(), ); $comments = get_comments( $args ); // Get all roles in the system. // https://developer.wordpress.org/reference/functions/wp_roles/ $all_roles = wp_roles(); // Create an associative array. // Key is the role name, value holds human readable name and comment count. $comment_counts = array (); foreach ( $all_roles->role_names as $role_name => $role_nice_name ) { $comment_counts[ $role_name ] = array ( 'nice_name' => $role_nice_name, 'comment_count' => 0, ); } // Iterate over all comments for this post. Exlude trackbacks, pingbacks, and non-user comments. foreach ( $comments as $comment ) { // Exclude trackbacks and pingbacks if ( '' !== $comment->comment_type ) { continue; } if ( 0 === $comment->user_id ) { // Exclude comments from non-users continue; } else { // Real user has commented... $comment_author = get_user_by( 'id', $comment->user_id ); if ( $comment_author ) { // Users can be assigned multiple roles, although that is ideally not done in practice. foreach ( $comment_author->roles as $role ) { $comment_counts[ $role ]['comment_count']++; } } } } // Create the HTML output. $comment_count_output = '<h3>Comment Counts by Role</h3>'; $comment_count_output .= '<ul>'; foreach ( $comment_counts as $role => $role_data ) { $comment_count_output .= '<li><strong>' . esc_html( $role_data['nice_name'] ) . '</strong>: <span>'. esc_html( (string) $role_data['comment_count'] ) . '</span></li>'; } $comment_count_output .= '</ul>'; return '<a href="'. $permalink . '" class="comments_link">' . $cc . '</a>' . $comment_count_output; } add_shortcode('comments', 'comments_shortcode'); 

Пример вывода:

24 Комментарии

Количество комментариев по ролям

  • Администратор: 3
  • Редактор: 0
  • Автор: 0
  • Загрузил: 0
  • Абонент: 4
  • Заказчик: 0
  • Менеджер магазина: 0
  • Работодатель: 0

Заметки:

Комментарии не обязательно являются зарегистрированными пользователями, поэтому общий счет комментариев не всегда будет равен сумме всех комментариев каждой роли.

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

WordPress будет технически разрешать пользователям иметь несколько ролей. Этот код будет работать с этим ненадежным случаем использования. В этих ситуациях для данного пользователя каждый счетчик каждой назначенной роли будет увеличен на единицу для одного комментария.