Как добавить проверенный значок перед именем автора в блоге WordPress - PullRequest
0 голосов
/ 06 декабря 2018

Добрый день, я пытался добавить значок подтверждения пользователям WordPress, но безуспешно.Я попытался с помощью администратора выполнить тестирование, проверив, есть ли у пользователя роль администратора, и попытаться ввести код здесь update_user_meta (display_name), но я не смог добавить значки к отображаемому имени.

Я также попытался создатьнастраиваемое поле в профиле пользователя с именем verify_user (текстовое поле) .... В котором я ввел значение "Verified" и сохранил ... Я искал хуки для использования, но не видел ни одного.Я не уверен, какой хук / фильтр использовать здесь

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

Спасибо

1 Ответ

0 голосов
/ 11 декабря 2018

Мне удалось получить решение, которое работало именно так, как я хотел.Для тех, у кого может быть одна и та же задача:

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 за указание на правильное направление, предоставив код, с которым я смог работать и манипулировать

...