Сьогодні я хочу з вами поділитися накопиченим досвідом з покращення улюбленого движка 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
    //Displays comments only
    foreach ($comments as $comment) : ?>
    $comment_type = get_comment_type(); ?>
    if($comment_type == ‘comment’) { ?>

  • //Comment code goes here
  • }
    endforeach;
    </ul>
    <ul>
    //Displays trackbacks only
    foreach ($comments as $comment) : ?>
    $comment_type = get_comment_type(); ?>
    if($comment_type != ‘comment’) { ?>

  • comment_author_link() ?>
  • }
    endforeach;
    </ul>

  • //Comment code goes here
    • Все набагато простіше, ніж у версії 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
    • Тепер необхідно присвоїти клас, який застосовується, якщо автор коментаря є автором поста:

      1
      2
    • І останнє, необхідно прописати стиль для нового класу. Відкриваємо style.css і вставляємо подібне:

      .authorcomment{
      color:#fff;
      font-weight:bold;
      background:#068;
      }

      .authorcomment{
      color:#fff;
      font-weight:bold;
      background:#068;
      }

      Все просто, тепер вам залишається тільки все гарно подати, все залежить від вашої фантазії.

      Отже, сьогодні я розповів вам про частину корисних фішок які можна виконати з коментарями. У мене в запасі є ще кілька трюків, так що обов’язково підписуйтесь на RSS і чекайте наступного випуску. Чекаю ваших відгуків та коментарів. І якщо раптом у вас виникнуть якісь проблеми, то обов’язково отписывайтесь в коментарях, будемо розбиратися.

      З повагою, Олександр Алаєв