НАВИГАЦИЯ

АПТЕКА

ПОПУЛЯРНЫЕ НОВОСТИ

Партнеры

Реклама

Полезная информация » CMS » WordPress » Выделяем комментарии по ролям пользователей

Выделяем комментарии по ролям пользователей

Небольшая информация
Название: Выделяем комментарии по ролям пользователей
Категория: CMS » WordPress
Просмотров: 2270
Тип использование и скачивания: Бесплатный если с Файлообменников.
Добавлен: 30-05-2012, 20:52
Автор: boomer
Мнение людей: Обсудить на форуме

Поделиться новостью
Подписка на файлы
Дополнительная информация
Выделяем комментарии по ролям пользователей

Давайте предполагать, что мы развиваем проект с хорошим сообществом — это - некоторые менеджеры, редакторы и авторы, кроме того на проектной регистрации, и статус снова зарегистрированного пользователя согласно подписчику (подписчик) открыт. Поскольку такой проект состоял бы в том, чтобы ассигновать не ужасно визуально комментарии групп пользователей, то есть например, комментарий менеджеров создан с красной структурой, редакторами — темно-синий и т.д.

Я часто вижу крашеные комментарии менеджера на блогах WordPress. Проверьте, что текущий комментарий — комментарий определенного пользователя (менеджер) может быть сделан очень просто, такая линия кодекса:
if( $comment->comment_author_email == '[email protected]' ) $class = 'admin';

но в этой статье я приближусь к вопросу более глобально.

В этой статье я дам пример, как будет возможно осветить комментарии не только пользователи с правами администратора, но также и всех других: авторы, редакторы и т.д. Идея принадлежит английскому разработчику веб-страниц Ozh. Проверив его кодекс, я был разочарован, потому что он отказался работать, но я нашел другое техническое решение. Вся задача уменьшена до получения роли зарегистрированного пользователя на удостоверении личности, и это решает так:
<?php
    $user = new WP_User( 10 );
    $role = $user->roles[0];
?>

В переменной $role хранится роль пользователя с ID 10. Например, если 10 — это администратор, то $role будет содержать administrator.
Подкрашиваем комментарии зарегистрированных пользователей

1. Добавляем CSS class (роль пользователя) к выводу комментариев.
Для этого, открываем файл темы functions.php, находим там функцию, которая отвечает за формирование вывода комментариев (в дефолтной теме twentyeleven она называется twentyeleven_comment()) и дописываем в нее код:
function twentyeleven_comment( $comment, $args, $depth ) {
    $GLOBALS['comment'] = $comment;

    // добавляем код сразу после $GLOBALS['comment'] = $comment;
    $user = new WP_User( $comment->user_id );
    $role = $user->roles[0];
    // переменную $role используем как аргумент функции comment_class($role)

    switch ( $comment->comment_type ) :
        case 'pingback' :
        case 'trackback' :
    ?>
    <li class="post pingback">
        <p><?php _e( 'Pingback:', 'twentyeleven' ); ?> <?php comment_author_link(); ?><?php edit_comment_link( __( 'Edit', 'twentyeleven' ), '<span class="edit-link">', '</span>' ); ?></p>
    <?php
            break;
        default :
    ?>
    <li <?php comment_class($role); ?> id="li-comment-<?php comment_ID(); ?>">
        <article id="comment-<?php comment_ID(); ?>" class="comment">
            <footer class="comment-meta">
......

Мы добавили 2 строчки кода и в функцию comment_class() добавили аргумент $role.

В результате этого изменения, к остальным CSS классам каждого комментария, будет добавлен CSS класс (роль пользователя). Примерно так, для админа:


  • 2. Задаем CSS стили.

    Вторым шагом, открываем style.css и задаем стили, которые будут отличать комментарии администраторов, авторов, редакторов, от обычных:#commentlist li { border:2px solid white; } /* не зарегистрированный пользователь */
    #commentlist li.administrator { border:2px solid red } /* Администратор */
    #commentlist li.editor { border:2px solid blue } /* редактор */
    #commentlist li.author { border:2px solid green } /* автор */


    Для старых версий шаблона

    В старых версиях шаблона вывод комментариев оформляется в файле темы comments.php, поэтому вышеописанный код нужно будет добавлять туда, после строки:
    <?php foreach ($comments as $comment) : ?>


    Вот, вроде, и все.

    Возможно что-то не так разъяснил, спрашивайте.






  • Место для Вашей рекламы - баннер - обращаться в КОНТАКТЫ