Мне удалось получить решение, которое работало именно так, как я хотел.Для тех, у кого может быть одна и та же задача:
function add_verification_bagdge_to_authors($display_name) {
global $authordata;
if (!is_object($authordata))
return $display_name;
$icon_roles = array(
'administrator',
'verified_author',
);
$found_role = false;
foreach ($authordata->roles as $role) {
if (in_array(strtolower($role), $icon_roles)) {
$found_role = true;
break;
}
}
if (!$found_role)
return $display_name;
$result = sprintf('%s <i title="%s" class="fa fa-check-circle"></i>',
$display_name,
__('This is a Verified Author', 'text-domain-here')
);
return $result;
}
add_filter( 'the_author', 'add_verification_bagdge_to_authors' );
Я смог решить эту задачу - создать роль пользователя с именем Verified Author (используя функцию add_role()
из Wordpress Codex * 1006).*), которая будет ролью, назначенной проверенному автору на сайте.Все пользователи с ролью администратора автоматически проверяются, в то время как роль пользователя должна быть переключена с роли участника или автора на проверенного автора.
Приведенный выше код смог выполнить 98% задачи, но при подтвержденном авторе / администраторекомментарии, их отображаемое имя не показывает проверенный значок.Я смог использовать приведенный ниже код, чтобы исправить это (комбинируя код с шорткодом).
function my_comment_author( $author = '' ) {
// Get the comment ID from WP_Query
$comment = get_comment( $comment_ID );
if ( ! empty($comment->comment_author) ) {
if (!empty($comment->user_id)){
$user=get_userdata($comment->user_id);
$author=$user->display_name.' '. do_shortcode('[this_is_verified-sc]'); // This is where i used the shortcode
} else {
$author = $comment->comment_author;
}
} else {
$author = $comment->comment_author;
}
return $author;
}
add_filter('get_comment_author', 'my_comment_author', 10, 1);
Шорткод для возврата проверенного значка, если пользователь является администратором или проверенным автором
function add_verification_bagdge_to_authors_sc($display_name) {
global $authordata;
if (!is_object($authordata))
return $display_name;
$icon_roles = array(
'administrator',
'verified_author',
);
$found_role = false;
foreach ($authordata->roles as $role) {
if (in_array(strtolower($role), $icon_roles)) {
$found_role = true;
break;
}
}
if (!$found_role)
return $display_name;
$result = sprintf('%s <i title="%s" class="fa fa-check-circle"></i>', $display_name, __('This is a Verified Author', 'text-domain-here') );
return $result;
}
add_shortcode( 'this_is_verified-sc', 'add_verification_bagdge_to_authors_sc' );
Обратите внимание: не все темы журнала правильно закодированы / имеют жестко запрограммированные элементы блоков и модулей, поэтому проверенный значок может не работать на их элементе блока / модуля.Я испытывал это на протяжении всего процесса разработки веб-сайта, поэтому нам пришлось изменить тему, и единственное изменение, которое я должен был внести в новую тему, - это удалить экранирование html, добавленное к их блочному / модульному коду, чтобы можно было визуализировать значок.,то есть в их модульном / блочном коде у них было что-то вроде esc_html( the_author() )
, и я удалил esc_html
, чтобы просто the_author()
, и все это заработало.
Это не совсем прямое решение, но вот какя смог решить эту задачу без использования плагина.Просто добавьте коды в ваш файл functions.php и все.Надеюсь, это кому-нибудь поможет.
Спасибо Kero за указание на правильное направление, предоставив код, с которым я смог работать и манипулировать