Intereting Posts
Неустранимая ошибка: вызов неопределенной функции plugin_dir_path () Не удается установить WordPress Владелец каталога ежемесячной загрузки WordPress установлен в root WordPress Social Login> Опубликовать в Facebook стена Facebook Как я могу получить список писем пользователей, которые прокомментировали сообщение? Отображать теги из определенной категории в выбранных полях Использовать URL-адрес изображения в качестве аргумента в функции update_field Редактор сообщений не работает с WordPress 3.5.1 Переопределение правил переопределения таксономии вместо маскировки Как получить исходную post_id статической домашней страницы? Правильно использовать 'get_template_directory_uri' Ajax live search, «Не найдено продуктов», когда заголовок содержит апострофы и цитаты Добавить поле ко всем пользовательским типам сообщений Запретить сайт при импорте данных из большого XML-файла Когда следует использовать esc_url, esc_html, esc_attr и друзей?

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

Итак, вот что я пытаюсь сделать. Я работаю над плагином, и я хочу проверить каждый комментарий и посмотреть, имеет ли автор этого комментария роль «администратора» или «редактора». Если они это сделают, вместо того, чтобы отображать их имя пользователя и аватар, я хотел бы показать название веб-сайта вместе с логотипом компании или чем-то еще. Я довольно новичок в разработке 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 ()