Сьогодні я хочу з вами поділитися накопиченим досвідом з покращення улюбленого движка WordPress. Пропоную почати ряд поліпшень з коментарів. Раджу всім звернути увагу на цей пост, я впевнений, що він виявиться корисним для кожного.
На багатьох блогах коментарі оформлені недбало. Це, безумовно, не є добре, адже саме через коментарі відбувається спілкування між автором блогу і його читачами. Саме тому я пропоную розглянути кілька корисних «штучок», які допоможуть привести ваші коментарі в належний вигляд. Отже, відразу приступимо до справи.
Все написане нижче я виконав та перевірив сам. Кожен хак перевірений для версій WordPress 2.7 і після. Якщо є відмінності, код розбирається для обох версій.
1. Додаємо корисні посилання на коментар
Проблема: Не залежно від того, чи дозволяєте ви своїм читачам залишати коментарі без попередньої модерації, їх часто доводиться редагувати, видаляти або відправляти в «спам». За замовчуванням WordPress показує тільки кнопочку «Редагувати» (робиться це за допомогою функції edit_comment_link ()), але кнопочок «Видалити» і «Спам» немає. Варто додати.
Вирішуємо проблему: В першу чергу додамо невелику таку функцію в functions.php нашого шаблону.
1 2 3 4 5 6 |
function delete_comment_link($id) { if (current_user_can(‘edit_post’)) { echo ‘ $id“).‘”>(Видалити)’; echo ‘ $id“).‘”>(Спам)’; } } |
function delete_comment_link($id) {
if (current_user_can(‘edit_post’)) {
echo ‘ (Видалити)’;
echo ‘ (Спам)’;
}
}
Після того як ми додали функцію, відкриваємо wp-includes/comment-template. Найзручніше буде скористатися пошуком у файлі по фразі edit_comment_link.
Знайдемо щось в дусі:
1 | edit_comment_link(__(‘(Edit)’),‘ ‘,“) ?> |
Залишилося додавати відразу після цього необхідний код:
1 | delete_comment_link(get_comment_ID()); ?> |
І у нас з’являться чарівні кнопки «Видалити» і «Спам». Дуже сподіваюся ці кнопочки вам не знадобляться, а всі коментарі будуть по справі.
2. Поділяємо коментарі і трекбеки
Про це я вже писав в одній з минулих статей (для версій WP 2.7 і вище).
Мабуть варто написати і для більш старих версій.
Проблема: Необхідно зробити роздільний висновок коментарів і трекбеков в запису. Проблема актуальна якщо ваш пост має багато трекбеков залишених в різний час. В цьому випадку коментарі і трекбеки перетворяться на кашу, в якій ви самі розберетеся, не кажучи вже про ваших читачів.
Вирішуємо проблему: Повторюся, це спосіб для шаблонів WordPress до версії 2.7.
Відкриваємо файл comments.php нашої теми і знаходимо там приблизно наступне:
1 2 3 |
foreach ($comments as $comment) : ?> // Comments are displayed here endforeach; |
foreach ($comments as $comment) : ?>
// Comments are displayed here
endforeach;
Беремо і замінюємо цей код повністю наступного:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
foreach ($comments as $comment) : ?> $comment_type = get_comment_type(); ?> if($comment_type == ‘comment’) { ?> } } |
- //Comment code goes here
-
Тепер необхідно присвоїти клас, який застосовується, якщо автор коментаря є автором поста:
1
2 -
І останнє, необхідно прописати стиль для нового класу. Відкриваємо style.css і вставляємо подібне:
.authorcomment{
color:#fff;
font-weight:bold;
background:#068;
}.authorcomment{
color:#fff;
font-weight:bold;
background:#068;
}Все просто, тепер вам залишається тільки все гарно подати, все залежить від вашої фантазії.
Отже, сьогодні я розповів вам про частину корисних фішок які можна виконати з коментарями. У мене в запасі є ще кілька трюків, так що обов’язково підписуйтесь на RSS і чекайте наступного випуску. Чекаю ваших відгуків та коментарів. І якщо раптом у вас виникнуть якісь проблеми, то обов’язково отписывайтесь в коментарях, будемо розбиратися.
З повагою, Олександр Алаєв
Все набагато простіше, ніж у версії 2.7 і вище. До того ж після поділу можна оформити стиль списку коментарів і списку трекбеков персонально.
3. Позбавляємося від html-коду в коментарях
Проблема: Блогери шукають будь-який спосіб просування свого блогу. Спамери скрізь. А вас не дратують «ліві» посилання в коментарях? Якщо ви модерируете всі комменатрии, то все зрозуміло, нічого зайвого не пройде. А якщо коментарів занадто багато часу на модерацію немає, публікуються коментарі без вашої перевірки? Реальна проблема. Ще й WordPress дружелюбно перетворює ДО и в коментарях активні посилання.
Вирішуємо проблему: Відкриваємо файл function.php нашої теми і додаємо наступний код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
function plc_comment_post( $incoming_comment ) { $incoming_comment[‘comment_content’] = htmlspecialchars($incoming_comment[‘comment_content’]); $incoming_comment[‘comment_content’] = str_replace( “‘”, “‘, $incoming_comment[‘comment_content’] ); return( $incoming_comment ); } function plc_comment_display( $comment_to_display ) { $comment_to_display = str_replace( “‘, “‘”, $comment_to_display ); return $comment_to_display; } add_filter(‘preprocess_comment’, ‘plc_comment_post’, “, 1); add_filter(‘comment_text’, ‘plc_comment_display’, “, 1); add_filter(‘comment_text_rss’, ‘plc_comment_display’, “, 1); add_filter(‘comment_excerpt’, ‘plc_comment_display’, “, 1); |
function plc_comment_post( $incoming_comment ) {
$incoming_comment[‘comment_content’] = htmlspecialchars($incoming_comment[‘comment_content’]);
$incoming_comment[‘comment_content’] = str_replace( “‘”, “‘, $incoming_comment[‘comment_content’] );
return( $incoming_comment );
}
function plc_comment_display( $comment_to_display ) {
$comment_to_display = str_replace( “‘, “‘”, $comment_to_display );
return $comment_to_display;
}
add_filter(‘preprocess_comment’, ‘plc_comment_post’, “, 1);
add_filter(‘comment_text’, ‘plc_comment_display’, “, 1);
add_filter(‘comment_text_rss’, ‘plc_comment_display’, “, 1);
add_filter(‘comment_excerpt’, ‘plc_comment_display’, “, 1);
Все просто. Тепер, як мовиться, html не пройде. Весь html-код буде відображатися в коментарях як простий текст. Це, однак, не відключає автотрансформацию url в посилання, але це і добре, користувачам не доведеться мучитися з копіюванням адреси в адресний рядок браузера, щоб перейти за посиланням. А ось інтерес спамерів до вашого блогу відразу зменшиться.
4. Виділяємо коментарі автора блогу особливим стилем
Проблема: Для постів, які мають велику кількість коментарів, знайти коментарі автора проблематично. Особливо якщо читач задав питання і шукає відповідь. Адже тільки у версії WordPress 2.7 з’явилася функція відповіді на коментар, а до цього всі коменти йшли підряд, сортируясь за датою. Як же виділити коментарі автора посту?
Вирішуємо проблему: WP версії 2.7 і старше мало того що з’явилася функція відповіді, так ще й всі вже за нас зроблено. Якщо ж у вас WP від 2.7 і свіжа тема, але ваші коментарі, як автора поста, нічим не виділяються від інших коментарів, вам варто лише прописати у файлі теми style.css стиль для класу bypostauthor, наприклад:
.bypostauthor { color:#fff; font-weight:bold; background:#068; } |
.bypostauthor {
color:#fff;
font-weight:bold;
background:#068;
}
На цьому все, нижче я розгляну варіант розбору для старих версій.
Відкриваємо файл шаблону comments.php і знаходимо
1 | foreach comment as $comment) { ?> |
Після цього відразу нижче вставляємо:
1 2 3 4 5 6 |
$isByAuthor = false; if($comment->comment_author_email == get_the_author_email()) { $isByAuthor = true; } ?> |
comment_author_email == get_the_author_email()) {
$isByAuthor = true;
}
?>
Як тільки ми це зробили, шукаємо шматок коду, що відповідає за стиль виводу коментарів (залежно від вашої теми він може змінюватися):
1 |