Автоматическое выделение комментариев администратора блога

29 Мая 2022г. в 04:33

В сегодняшнем уроке мы рассмотрим, как легко выделить все комментарии админа блога.

Данный метод существенно облегчит читателям блога поиск комментариев администратора.



Для осуществления этого нам понадобится пройти несколько шагов.

1-й ШАГ - правильный выбор администраторов

Как же нам определить какой из пользователей является администратором? Все очень просто - достаточно проверить зарегистрированные почтовые адреса (емейлы).

1.1. Ручной метод

В ручном методе мы сами вводим все адреса, которые мы хотим выделить (т.е. емейлы всех администраторов - их может быть несколько). Нам необходимо найти файл comments.php в нашем шаблоне и перед строкой “if comments” внести следующий код:

<?php
//List of emails to highlight
$admin_emails = array(
"[email protected]",
"[email protected]",

"[email protected]",
"[email protected]"
);
?>
Почтовые адреса не обязательно должны принадлежать зарегистрированным пользователям блога. Поэтому сюда Вы можете вставить все Ваши адреса, или те адреса, которыми Вы планируете пользоваться для отправления комментариев.

Минусом этого метода, является отсутствие автоматизации. Каждый адрес необходимо вписывать вручную, что не очень удобно, если админов много и постоянно добавляются новые.

Намного легче воспользоваться автоматическим методом.

1.2. Автоматический метод

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

Для этого нам необходимо сделать запрос к базе данных. Из базы данных нам необходимо извлечь емейлы админов и поместить их в массив. Будем мы это делать с помощью Wordpress database object (http://codex.wordpress.org/Function_Reference/wpdb_Class).

<?php
//Automatically pull admin accounts
$user_level = 8; //Default user level (1-10)
$admin_emails = array(); //Hold Admin Emails
//Search for the ID numbers of all accounts at specified user level and up
$admin_accounts = $wpdb->get_results("SELECT * FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value >= $user_level ");
//Get the email address for each administrator via ID number

foreach ($admin_accounts as $admin_account){
//Get database row for current user id
$admin_info = $wpdb->get_row("SELECT * FROM $wpdb->users WHERE ID = $admin_account->user_id");
//Add current user's email to array
$admin_emails[$admin_account->user_id] = $admin_info->user_email;
}
?>
Если это Ваше первое знакомство с Wordpress database object, тогда код выше может показаться Вам немного странным. Давайте рассмотрим его детальнее:

1. Переменная $user_level содержит номер от 1 до 10. У каждой роли (читатель, админ, редактор) пользователя Вордпресс (http://codex.wordpress.org/Roles_and_Capabilities#level_10) есть цифровое значение. Для выбора только администраторов нам понадобится число "8".

2. Массив $admin_emails будет содержать все адреса, полученные после запроса

3. Первый запрос к базе данных ищет в таблице usermeta всех пользователей с правом доступа больше $user_level (в нашем примере - 8). Результат запроса хранится в массиве $admin_accounts

4. Каждый значение в массиве $admin_accounts обрабатывается, и снова обращаемся к таблице пользователей, используя номер id полученный в 3-м шаге. После этого достаем емейл адреса и сохраняем их в массив $admin_emails.

В конце у нас получается массив с почтовыми адресами всех администраторов. Теперь при добавлении нового админа все будет происходить на автомате.

2-й ШАГ - Отмечаем комментарии Администраторов

Теперь нам необходимо проверить каждый из комментариев на наличие в нем необходимого почтового адреса. Если есть совпадение, тогда присваиваем такому комментарию класс “admincomment”.

В файле comments.php Вашего шаблона необходимо найти цикл комментариев foreach, и вставить следующий код сразу после начала цикла:

<!--Check if comment is by the author-->
<?php
//Default to
$admin_comment = false;
foreach ($admin_emails as $admin_email){
//If comment was made from an admin email
if($comment->comment_author_email == $admin_email){
$admin_comment = true;
break;
}
};
?>
Код выше берет почтовый адрес автора комментария и проверяет его по списку адресов админов. Если есть совпадение, $admin_comment приобретает значение true.

3-й ШАГ - Присваиваем специальный класс к комментариям

<li class="<?php if($admin_comment) echo 'admincomment'; ?>">
<!--Typical comment things here-->
</li>
Выше Вы видите пример кода отображения комментариев на блоге. Обратите особое внимание на PHP, которое находится в атрибуте класса.

Для того, чтобы все верно работало структура комментариев (код выше) должна находится ПОСЛЕ цикла $isByAdmin.



4-й ШАГ - Меняем внешний вид комментариев

Это совсем легко сделать. Достаточно в таблицу стилей добавить следующий код:

.admincomment{background:#191919; color:#FFF; border:1px solid #333;}
Конечно же, код выше это только пример оформления. Вы можете поменять все на свое усмотрение.