Intereting Posts
Исключить теги по массиву Как вернуть изображение из пользовательской конечной точки API REST? Загружать в центр страницы Как эхо значение поля выбора мета в браузере Как использовать wordpress с Git? Запрос, который дважды присоединяется к таблице postmeta WordPress не принимает пароль и имя пользователя Пользовательский запрос WordPress для отображения сообщений за последние шесть лет Возможно ли иметь одну страницу с несколькими элементами или 2 блогов на сайте? Невозможно удалить ссылки на тележку, выписку и магазин Изменить url-структуру для страниц WordPress – страницы в strucutre, а не на верхнем уровне Как добавить раскрывающийся список ролей пользователей при регистрации в wordpress Как я могу извлечь или проанализировать данные из коротких кодов содержимого содержимого в массив? Как разработать детскую тему для диссертации Отображать таксономию с максимальным количеством букв

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

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 будет технически разрешать пользователям иметь несколько ролей. Этот код будет работать с этим ненадежным случаем использования. В этих ситуациях для данного пользователя каждый счетчик каждой назначенной роли будет увеличен на единицу для одного комментария.