Intereting Posts
Способы управления промежуточными и производственными сайтами WordPress? Получить несколько значений атрибута короткого кода Использование нескольких метафайлов в pre_posts_query Какой аргумент мне нужна функция для эхо-результата get_results () Расширенные пользовательские поля (acf) – отношение фильтра по таксономии, а не тип сообщения Аномалия с ответом, исходящим из XML RPC Api get Post (целое вне диапазона) таблица префиксов и плагинов Как создать ссылку на мой WordPress Нажмите «Опубликовать», когда я использую собственный URL-адрес Как удалить одобренные спам-комментарии по дате? Совокупные резюме сообщений разных блогов в многоуровневом экземпляре taggame.php и query_posts () Пользовательские поля, прикрепленные к шаблону страницы, отображаются только на экране редактирования, когда страница сохраняется Подключение к медиа-библиотеке для загрузки изображений (НЕ связано с каким-либо сообщением) как редактировать пользовательские поля галереи типов из front-end Ребенок и редактор Jetpack

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

Итак, вот что я пытаюсь сделать. Я работаю над плагином, и я хочу проверить каждый комментарий и посмотреть, имеет ли автор этого комментария роль «администратора» или «редактора». Если они это сделают, вместо того, чтобы отображать их имя пользователя и аватар, я хотел бы показать название веб-сайта вместе с логотипом компании или чем-то еще. Я довольно новичок в разработке WordPress и застрял на этом. Я не могу понять, есть ли для этого фильтр, или мне нужно создать шаблон пользовательских комментариев. Если бы кто-то даже мог заставить меня указать в правильном направлении, это было бы здорово, потому что на данный момент я даже не уверен, с чего начать. Спасибо.

Где я, Мой мыслительный процесс:

<?php function anonymize_author(){ global $post; //get the id of the comment author $author_id = $post->post_author; //get the userdata of comment author $author_info = get_userdata($author_id); //get the user roles of comment author $author_roles = $author_info->roles; //Array of roles to check against $roles_to_check = ["editor", "administrator"]; //see if user has a role in my $roles_to_check array $results = array_intersect($roles_to_check, $author_roles); if(!empty($results)){ //the user has roles of either "editor" or "administrator" //load custom comments page? //I need to display the author name as the site name //and the avatar as the site logo }else{ //Just a regular user, load the WordPress Default comments } } add_filter('some_filter_here', 'anonymize_author'); ?> 

Solutions Collecting From Web of "Сделать имя пользователя в качестве имени сайта в комментариях, если оно соответствует определенным ролям"

Кажется, у вас уже есть идея о том, как использовать фильтры, поэтому я не буду приводить здесь пример. Расширяясь в ответ Дэвида Ли, вы, вероятно, можете использовать фильтры get_avatar и get_comment_author_link для основной цели, которую вы описываете, а в вашей функции или функциях проверяется, является ли комментатор зарегистрированным пользователем с правильными уровнями учетных записей.

get_avatar делает последнюю часть легкой, поскольку она возвращает идентификатор комментария или адрес электронной почты. Хорошим примером для начала работы является связанная запись get_avatar Codex. Вы также можете просто попробовать фильтры и посмотреть, производят ли они ожидаемые результаты: если ваша простая функция фильтра get_avatar заменяет аватар, вы узнаете, что ваша тема использует get_avatar, и вы можете перейти оттуда. То же для get_comment_author_link.

В противном случае, если вы не собираетесь полностью заменить систему комментариев вашей темы, универсального решения не будет, потому что шаблоны комментариев отличаются: просто замена аватара другим изображением с использованием фильтра get_avatar может работать на 90% + WordPress тем, но терпит неудачу.

Если это не удается, для настройки комментариев есть много учебников и примеров. Один из способов продолжить работу и получить представление о том, как далеко вы собираетесь пойти, если у вас возникнут трудности, сначала проверьте файл комментариев comments.php вашей темы (или ее родительскую тему) и убедитесь, что он использует wp_list_comments (), и если да, то каким образом (особенно если он использует аргумент «walker»). Возможно даже, что вы уже используете плагин, который захватывает стандартную форму комментария и заменяет ее одним из своих. Однако в любом случае вы все равно сможете использовать различные стандартные фильтры комментариев, так как многие пользовательские системы комментариев все еще будут использовать стандартные функции.

Если вы хотите изменить список комментариев, проверьте wp_list_comments (), как и навигационное меню, которое вы можете изменить с помощью ходока:

 wp_list_comments( array( 'walker' => new Walker_Comment() ) ); 

есть пример на этой странице, я думаю, вы хотите изменить эту часть:

 <div class="comment-author vcard"><?php if ( $args['avatar_size'] != 0 ) { echo get_avatar( $comment, $args['avatar_size'] ); } printf( __( '<cite class="fn">%s</cite> <span class="says">says:</span>' ), get_comment_author_link() ); ?> </div> 

если вы также хотите изменить форму комментария, проверьте comment_form ()