Сборник полезных хаков для комментариев WordPress. Часть 1

Сегодня я хочу поделиться с вами накопленным опытом по улучшению любимого движка 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 ' <a href="'.admin_url("comment.php?action=cdc&c=$id").'">(Удалить)</a>';
    echo ' <a href="'.admin_url("comment.php?action=cdc&dt=spam&c=$id").'">(Спам)</a>';
  }
}

После того как мы добавили функцию, открываем wp-includes/comment-template. Удобнее всего будет воспользоваться поиском в файле по фразе edit_comment_link.

Найдем что-то в духе:

1
<?php edit_comment_link(__('(Edit)'),'&nbsp;&nbsp;','') ?>

Осталось добавлять сразу после этого необходимый код:

1
<?php 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;

Берем и заменяем этот код полностью на следующий:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<ul class="commentlist">
    <?php //Displays comments only
	foreach ($comments as $comment) : ?>
       	<?php $comment_type = get_comment_type(); ?>
       	<?php if($comment_type == 'comment') { ?>
	    <li>//Comment code goes here</li>
	<?php }
    endforeach;
</ul>
 
<ul>
    <?php //Displays trackbacks only
	foreach ($comments as $comment) : ?>
       	<?php $comment_type = get_comment_type(); ?>
       	<?php if($comment_type != 'comment') { ?>
	    <li><?php comment_author_link() ?></li>
	<?php }
    endforeach;
</ul>

Все гораздо проще, чем в версии 2.7 и выше. К тому же после разделения можно оформить стиль списка комментариев и списка трекбеков персонально.

3. Избавляемся от html-кода в комментариях

Избавляемся от html-кода в комментариях

Проблема: Блоггеры ищут любой способ продвижения своего блога. Спаммеры везде. А вас не раздражают «левые» ссылки в комментариях? Если вы модерируете все комменатрии, то все понятно, ничего лишнего не пройдет. А если комментариев слишком много, времени на модерацию нет, комментарии публикуются без вашей проверки? Реальная проблема. Еще и WordPress дружелюбно превращает URL’ы в комментариях в активные ссылки.

Решаем проблему: Открываем файл 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( "'", '&apos;', $incoming_comment['comment_content'] );
	return( $incoming_comment );
}
 
function plc_comment_display( $comment_to_display ) {
	$comment_to_display = str_replace( '&apos;', "'", $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;
}

На этом все, ниже я рассмотрю вариант разбора для старых версий.

Открываем файл шаблона comments.php и находим

1
<?php foreach comment as $comment) { ?>

После этого сразу ниже вставляем:

1
2
3
4
5
6
<?php
$isByAuthor = false;
if($comment->comment_author_email == get_the_author_email()) {
$isByAuthor = true;
}
?>

Как только мы это сделали, ищем кусок кода, отвечающий за стиль вывода комментариев (в зависимости от вашей темы он может изменяться):

1
<li class="<?php echo $oddcomment; ?>" id="comment-<?php comment_ID() ?>">

Теперь необходимо присвоить класс, применяемый, если автор комментария является автором поста:

1
2
<li class="<?php echo $oddcomment; ?> <?php if($isByAuthor ) {
 echo 'authorcomment';} ?>" id="comment-<?php comment_ID() ?>">

И последнее, необходимо прописать стиль для нового класса. Открываем style.css и вставляем подобное:

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

Все просто, теперь вам остается только все красиво представить, все зависит от вашей фантазии.

Итак, сегодня я рассказал вам про часть полезных «фишек» которые можно проделать с комментариями. У меня в запасе есть еще парочка трюков, так что обязательно подписывайтесь на RSS и ждите следующего выпуска. Жду ваших отзывов и комментариев. И если вдруг у вас возникнут какие то проблемы, то обязательно отписывайтесь в комментариях, будем разбираться.

С уважением, Александр Алаев
 
Ерунда и баянЪ!Зачет! Плюсую!
+13
 
Оптимизация сайта

Профессиональный технический аудит и оптимизация вашего сайта.
Тот самый необходимый «фундамент» для успешного продвижения.

от 15 000 руб.
Продвижение сайта

Комплексный подход к решению поставленных задач, будь то достижение заветных позиций в ТОП 10 или увеличение трафика на сайт. В стоимость уже включены полный технический аудит и оптимизация сайта.

от 20 000 руб.
Консультация

У вас недостаточно знаний?
Нужен ответ на ряд вопросов?
Хотите узнать мнение эксперта?
Вы задаете вопрос — я на него отвечаю!

2 500 руб./час
 
Получай новости блога АлаичЪ'а на e-mail:
 
Другие посты из категории WordPress:
Что нового на форуме:
  1. Mуt@NT (6 комм.)

    Очень кстати. Мне нравиться воржпресс своей простотой и в то же время своей гибкостью. Сам очень долго искал способ подсветки комментариев автора.

    Ответить
    • АлаичЪ

      Способов подсветки тьма тьмущая. Я в посте написал просто как сделать фон под авторским комментарием. А потом я еще весь вечер сидел и разные варианты пробовал, ох как их много. Все зависит от вашей фантазии ;)

      Ответить
  2. Platon (3 комм.)

    А я столкнулся с проблемой дублирования контента на блоге, как только включил функцию древовидных комментов. Появляются дублированные страницы с адресом типа ".../replytocom/". Ранее такой функцией не пользовался.

    Пока обнаружил — попал под АГС. Вот такие дела.

    Ответить
    • АлаичЪ

      Платон, вы не там проблему ищите. replytocom это собственно часть url'а кнопочки "Ответить" под каждым комментарием. Соответственно страничек таких будет столько же сколько комментариев у вас в блоге. Да, эта кнопка появляется когда включаешь древовидные комментарии.

      Но ноги растут из robots.txt. Если вы используете ЧПУ, то добавьте в robots две строчки:

      Disallow: /*?*

      Disallow: /*?

      Они вас избавят от мусора, который поисковикам индексировать совсем не нужно.

      То же самое касается запрета индексации категорий, тегов и архивов. Это делается уже с помощью плагина All In One Seo.

      Ответить
      • Platon (3 комм.)

        Огромное спасибо. Подправил файл robots.txt

        Ответить
  3. vlad (3 комм.)

    Запретить HTML неплохая идейка, но ссылки в виде url смотрятся не очень, наверное лучше просто закрыть ссылки в комментариях от индексации и указать это на видном месте.

    P.S. галочки напротив "Подписаться на новые комментарии (рекомендуется)" в опере не видно, потому что фон темный.

    Ответить
  4. jesh! (5 комм.)

    Шикарные советы. Сейчас настрою себе пару хаков...

    Особенно понравился про выделение комментов автора. Долго недоумевал, как другие это делают...

    Ответить
  5. Андрей (5 комм.)

    А можно сделать так, чтобы комментарии к странице были в обратном порядке? т.е. последний был сверху?

    Ответить
    • АлаичЪ

      Конечно, для этого даже не требуется никаких изменений кода.

      Идем в админку -> Настройки -> Обсуждение -> Сверху отображать старые/новые комментарии.

      Вуаля!

      Ответить
      • Андрей (5 комм.)

        не работает (

        может это быть из-за того, что комментарии не к посту, а к Page?

        Ответить
        • АлаичЪ

          Вот этого я не знаю. У меня к страницам отключены комментарии. Но а вообще не должно быть этого. На всякий случай проверьте на стандартной теме оформления для вашей версии WP. Вдруг в теме дело.

          Ответить
  6. Maxim (1 комм.)

    Все работает спасибо. Правда на свой блог еще не поставил, так как спаммеров еще нет ни одного!

    Ответить
    • АлаичЪ

      Так это не от спамеров, а для любимых комментаторов ;) Не путайте!

      Ответить
  7. Drengr (1 комм.)

    Наконец-то нашел толковую запись о подсветке комментов админа. Спасибо. Сейчас настрою, чтоб отличаться от обычных юзеров.

    Ответить
  8. Белый (1 комм.)

    Отлично! Комментирование с вставками рекламных ссылок работает отлично, вместо ссылки код показывается. Поставил и сам не поверил, что с первого раза все получилось. Спасибо за решение этой проблемы.

    Ответить
  9. int (1 комм.)

    По поводу кнопки — Удалить

    "Осталось добавлять сразу после этого необходимый код:" Какой?

    <?php delete_comment_link ( ); ?> где брать id для аргумента фукции ?

    Ответить
    • АлаичЪ

      Ух...закралась подлая ошибка в пост, забыл тег <pre> поставить перед кодом, который вставить надо. Смотрите обновление.

      Ответить
      • Сергей (22 комм.)

        А можно поподробнее, пожалуйста?.. Где именно нужно прописывать тег pre?.. Попробовал заключить вызов процедуры в него, все равно ссылки не отобразились... Скажи, пожалуйста, как у тебя прописано?..

        Ответить
        • АлаичЪ

          Это я про себя написал про тег pre. Имелось ввиду что я пост некорректно оформил забыв тег вставить, из за чего кое-что не отображалось.

          Прочитайте первый пункт этого поста, теперь там все корректно. Там написано какой файл открыть, что в нем найти и что вставить. Как написано в посте, так и у меня реализовано. Все будет работать.

          Ответить
  10. Сергей (22 комм.)

    Здравствуйте!

    Статья, конечно, очень актуальная, но у меня почему-то не добавились ссылки "Удалить" и "Спам". Добавил функцию, добавил ее вызов, но ни одной ссылки я не увидел... Может быть дело в самом вызове функции: delete_comment_link (get_comment_ID ()); ?.. Пробовал ее прописать внутри тега div, где прописаны вызовы функций и после него, но ничего не вышло... Скажите, пожалуйста, в чем может быть дело?..

    Мне кажется, что сама функция маленько не точно прописана...

    Ответить
    • АлаичЪ

      Странно, что не появилось ничего. Функции я корректно прописал, только что со своими файлами сравнил, все один в один.

      И не забывайте что вставлять код надо в файл wp-includes/comment-template.php, а не в файлы шаблона темы.

      Про div ничего не понял. Можно подробнее?

      PS Не забывайте после внесения изменений удалять кэш, если пользуетесь плагинами типа WP Super Cache.

      Ответить
      • Сергей (22 комм.)

        Спасибо!Я уже разобрался! Надо в файле function.php чуть по выше в описании класса commentmetadata, т.е. там, где прописаны все, что отображается сверху комментария, дописать функцию delete_comment_link (get_comment_ID ()); и тогда ссылки отобразятся... Вот только я бы еще хотел, чтоьы ссылки "Удалить" и "Спам" отображались не сверху комментария, а снизу, после ссылки "Ответить". Но, к сожалению, когда я добавляю вызов функции delete_comment_link (get_comment_ID ()); перед или после вывода ссылки "Ответить", то ссылки "Удалить" и "Спам" у меня отображаются сверху или снизу ссылки "Ответить" соответственно, хотя никакого перехода на новую строку в коде я не вижу... Скажите, пожалуйста, в чем может быть дело?..

        Ответить
        • АлаичЪ

          Ну смотрите. Все просто. Чтобы отобразить ссылки рядом с "Ответить" делаем так: открываем comment-template.php и поиском по файлу находим <div class="reply">

          Если сразу же после этого кода вставить функцию, то ссылки появятся ПЕРЕД "Ответить". Если нужно ПОСЛЕ "Ответить", то перед закрывающим тегом </div> вставляем функцию.

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

          Ответить
          • Сергей (22 комм.)

            Это странно, но у меня это не работает... Работает только если функцию эту прописать в файле functions.php, но так отображается не так, как я хочу...

            Ответить
          • АлаичЪ

            Я вас не могу понять. Саму функцию надо добавить в файл functions.php вашей темы. А вызов ее делать в файле wp-includes/comment-template.php

            Мне кажется, что вы не так что-то делаете.

            Ответить
          • Сергей (22 комм.)

            Я именно так и делаю! Скажите, пожалуйста, мне свой e-mail и я Вам вышлю участки кода файлов своих... Или скажите, каким образом можно написать код сюда... Я как-то на одном блоге пытался заключить код внутри тега code, но у меня он криво отобразился...

            Ответить
          • АлаичЪ

            Можете код вставлять прямо сюда, он не обрабатывается и останется таким, каким вы его вставите.

            Ответить
          • Сергей (22 комм.)

            Хорошо... Кстати тоже очень полезная вещь... =) Вот код вывода комментариев из файла function.php:

            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            
            <div class="commentmetadata">
            <noindex><?php comment_author_link () ?></noindex> |
            <a href="#comment-<?php comment_ID () ? rel="nofollow">" title=""><?php comment_date ('d.m.Y') ?> г. в <?php comment_time () ?></a>
            <?php if (function_exists ('comment_subscription_status')) { if (comment_subscription_status ()) { echo '(подписан на отзывы)'; } } ?> <?php edit_comment_link ('Редактировать','| ',''); ?>
            </div>
            <?php if ($comment->comment_approved == '0') : ?>
            <span class="moderation">Ваш отзыв на модерации.</span>
            <?php endif; ?>
            <span class="comment_text">
            <?php comment_text () ?>
            </span>
            <?php echo comment_reply_link (array ('before' => '<div class="reply">', 'after' => '</div>', 'reply_text' => 'Ответить &raquo;', 'depth' => $depth, 'max_depth' => $args['max_depth'] )); ?> <?php delete_comment_link (get_comment_ID ()); ?>
            <br><br>
            </div>

            Меня интересует именно последний класс, в который я и добавил ссылки «Удалить» и «Спам». В этом случае они отображаются после ссылки «Ответить» и на новой строчке. Аналогичное происходит, если эту процедуру прописать перед выводом ссылки «Ответить». Как видно, никаких переходов на новую строку здесь нет, но тем не менее это происходит.

            Теперь посмотрим файл comment-template.php, а именно на класс reply. На данный момент у меня он выглядет следующим образом:

            1
            2
            3
            4
            
            <div class="reply">
            <?php comment_reply_link (array_merge ( $args, array ('add_below' => $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
            <?php delete_comment_link (get_comment_ID ()); ?>
            </div>

            Т.е. функция вывода ссылок «Удалить» и «Спам» прописана ПОСЛЕ вывода ссылки «Ответить» и обязана там появиться, но этого не происходит. А если вызов этой функции убрать в файле functions.php, то ссылки пропадают вовсе! Т.е. надо разбираться именно с этим файлом и классом:

            1
            
            <?php echo comment_reply_link (array ('before' => '<div class="reply">', 'after' => '</div>', 'reply_text' => 'Ответить &raquo;', 'depth' => $depth, 'max_depth' => $args['max_depth'] )); ?> <?php delete_comment_link (get_comment_ID ()); ?>

            Если вызов функции delete_comment_link (get_comment_ID ()); прописать сразу после вызова ссылки «Ответить», т.е. не разрывая теги php, то ситуация не меняется... Не помогает и команда echo перед вызовом функции delete_comment_link (get_comment_ID ());

            Ответить
          • АлаичЪ

            Ну и капец вы мне устроили. Какая у вас вообще версия WP? Видимо старая, или, точнее сказать, тема у вас старая какая-то.

            У меня есть следующие варианты.

            1. Самый просто, но может и не заработать, зависит от стиля

            в вашем шаблоне:

            1
            
            <?php echo comment_reply_link (array ('before' => '<div class="reply">', 'after' => '</div>', 'reply_text' => 'Ответить &raquo;', 'depth' => $depth, 'max_depth' => $args['max_depth'] )); ?> <?php delete_comment_link (get_comment_ID ()); ?>

            Заменить на

            1
            
            <?php echo comment_reply_link (array ('before' => '<p class="reply">', 'after' => '</p>', 'reply_text' => 'Ответить &raquo;', 'depth' => $depth, 'max_depth' => $args['max_depth'] )); ?> <?php delete_comment_link (get_comment_ID ()); ?>

            2. Вариант сложнее немного.

            Функцию в functions.php изменить так

            1
            2
            3
            4
            5
            6
            
            function delete_comment_link ($id) {
            if (current_user_can ('edit_post')) {
            echo ' <div class="reply_act"><a href="'.admin_url ("comment.php?action=cdc&c=$id").'" rel="nofollow">(Удалить)</a>';
            echo ' <a href="'.admin_url ("comment.php?action=cdc&dt=spam&c=$id").'" rel="nofollow">(Спам)</a><div>';
            }
            }

            Стиль в style.css прописать:

            .reply_act {width: 200px; float:left;}

            В стиль .reply который у вас должен быть в style.css добавить width:200px; float:left;

            Если этого стиля нет вдруг, то добавить его .reply {width:200px; float:left;}

            Ответить
          • Сергей (22 комм.)

            Спасибо! в первом варианте поменялся только стиль вывода комментариев, а вот во втором все комментарии съехали вправо и расстояние между ними уменьшилось... Пытался подогнать как-нибудь, но выходит всякая белеберда...

            Я пользуюсь WPMU 2.9.1 и темой blue_sky_beach_theme.

            Прошу прощения за неудобство...

            Скажите, пожалуйста, а у Вас есть статья, в которой описано, как осуществить использование темы от WP в соц. сети BuddyPress или чтобы основной блог использовал тему для WP, а соц. сеть, т.е. блоги пользователей использовали тему BuddyPress? Конечно, это не совсем разумно, т.к. тема blue_sky_beach_theme сильно отличается от существующий тем BuddyPress... Хотя, в таблице стилей можно запросто изменить ее внешний вид... А что Вы мне посоветуете?.. Прошу прощения за оффтоп...

            Ответить
          • АлаичЪ

            Совсем вы меня запутали, Сергей. Я не могу не видя ваш сайт сказать точно. Вы мне отпишите в аську, она указана тут http://alaev.info/main/contacts и мы с вами на реальном примере все решим. Я вам помогу, и с темой разберемся и все что надо сделаем.

            Ответить
          • Сергей (22 комм.)

            Ладно... Сделал я так, что ссылки "Редактировать", "Удалить" и "Спам" отображались внизу комментария, а ссылка "Ответить" — ниже их всех... Конечно, не очень красиво, но лучше всего выглядет...

            Вопрос: а можно сделать так, чтобы редактирование и удаление комментария производились без участия админ-панели?.. Когда я нажимаю ссылку "Редактировать" меня перекидывает в админ-панель и уже там проводится редактирование. Тоже самое и с удалением... А можно как-нибудь избежать этого?.. Т.е. чтобы все делалось в заметке?..

            Ответить
          • Сергей (22 комм.)

            Лично мне не хотелось бы тратить Ваше время на разборки моих недочетов, т.к. на это понадобится очень много времени и сил. Поэтому оставлю так, как у меня сейчас есть... Пусть это и не очень красиво... Меня интересуют теперь всего 2 вопроса:

            1. можно ли редактировать и удалять комментарий без вмешательства в админ-панель;

            2. можно ли использовать разные темы в социальной сети WordPress MU + BuddyPress?..

            Ответить
          • АлаичЪ

            Ну вы еще учитывайте, что эти ссылки никому кроме вас не видны, так что это "некрасиво" видно только админу.

            Вариантов удаления без участия админки я не знаю, к сожалению :(

            А с WordPress MU и BuddyPress я не работал, потому подсказать не могу.

            Ответить
          • Сергей (22 комм.)

            А если пользователь будет зарегистрированным на блоге моем, ему тоже не будет видно этих ссылок?..

            Ответить
          • АлаичЪ

            Я думаю, тут все зависит от прав, которыми он наделен. Если у него нет права вмешиваться в управление публикациями и комментариями, то не увидит.

            Ответить
          • Сергей (22 комм.)

            Надо будет поэксперементировать с этим... Был бы какой-нибудь видеокурс по настройке блога на WordPress MU... Легче бы было...

            Ответить
  11. Сергей (22 комм.)

    Здравствуйте!

    Насчет выделения комментария автора статьи — это конечно здорово... Есть над чем поразмышлять, но у меня при добавлении соответствующего стиля выделяется вся область комментария, включая дату, имя автора, ссылки "Редактировать", "Удалить", "Спам", "Ответить", а также сам комментарий... А хочется, чтобы выделялся именно сам комментарий и больше ничего... Скажите, пожалуйста, как это можно устроить?..

    Ответить
    • АлаичЪ

      Видите, Сергей, в чем дело. Тут единственный подходящий вариант — выделение фоном именно всей области комментария. Ну можно еще как вариант прописать стиль для рамки, но тоже для всей области.

      Проблема состоит в следующем: Так как включены древовидные комментарии, по крайней мере у меня, у вас, как я понял, тоже, то будет выделяться комментарий админа и все ответы на него, то есть стиль автоматом присваивается и комментариям <ul class='children'>. Иными словами, все ответы на админский коммент будут такими же как админский.

      Надеюсь, понятно объяснился.

      Ответить
      • Сергей (22 комм.)

        Да... Спасибо... Все понятно... Т.е. мне его лучше стоит убрать, раз Вы говорите, что выделяться будет не только комментарий автора, но и все комментарии на него... Лучше все-таки убрать мне эту примочку...

        Ответить
        • АлаичЪ

          Ну это как вам нравится. При правильном подходе можно все очень красиво оформить. Все зависит от вашей фантазии и знания css.

          В WP очень много разных негласных штучек. Это находка для фанатов. Достаточно просто проанализировать исходный код любой странички блога.

          Ответить
          • Сергей (22 комм.)

            Спасибо за наставление! Буду думать...

            Ответить
  12. Сергей (22 комм.)

    Здравствуйте!!!

    У меня шокирующая проблема! Пришлось переустановить WordPress MU из-за того, что каким-то образом повредился файл wp-config.php! После переустановки я заметил, что ссылки "Ответить" в комментариях у меня нет!!! Как такое может быть??? Все прописано в файле темы моей functions.php! Вот код:

    <?php edit_comment_link ('Редактировать',' ',''); ?> <?php echo delete_comment_link (get_comment_ID ()); ?> <?php if (function_exists ('quoter_comment')) { quoter_comment (); } ?> <?php echo comment_reply_link (array ('before' => '<div class="reply">', 'after' => '</div>', 'reply_text' => 'Ответить &raquo;', 'depth' => $depth, 'max_depth' => $args['max_depth'] )); ?>

    Все ссылки присутствуют, кроме "Ответить"! Почему??? Вот же ее вызов:

    <?php echo comment_reply_link (array ('before' => '<div class="reply">', 'after' => '</div>', 'reply_text' => 'Ответить &raquo;', 'depth' => $depth, 'max_depth' => $args['max_depth'] )); ?>

    Почему она у меня не отображается?.. Плагина для нее я вроде бы никакого не ставил...

    Ответить
    • АлаичЪ

      А зачем было переустанавливать то? Взяли бы да заменили только wp-config.php на новый, заполнив при этом необходимые данные. Ай ай ай. Учтите на будущее.

      Что изменилось при переустановке движка? Все настройки при этом сбросились? Если да, то включите древовидные комментарии. Только при их активации ссылка "Ответить" появляется.

      Ответить
      • Сергей (22 комм.)

        Точно! Спасибо большое! А как бы я заменил файл wp-config.php, если его у меня нету?.. Если только файл wp-config-sample.php переименовать в него и заполнить поля?.. Был бы такой плагин, которые все настройки сохраняет...

        Ответить
        • АлаичЪ

          Ну само собой заменить на config-sample.php предвариантельно переименовав и заполнив данные для подключения к БД. Разве еще что то надо?

          PS И вообще бекапы решают все проблемы. Я без них жизни не представляю. Это так же как идти на толпу злых дядек плохо их при этом ругая и быть в одних трусах.

          Чуть что случись и всю информацию потеряете и не восстановите никак.

          Ответить
          • Сергей (22 комм.)

            Ну это понятно... Я перед переустановкой всегда бэкап базы делаю... Жаль только, что при этом не сохраняются настройки...

            Ответить
          • АлаичЪ

            Бекап базы и бекап файлов вещи разные. Надо бекапить все и сразу. Порой случается, что один бекап без другого бесполезен.

            Ответить
          • Сергей (22 комм.)

            Лично я сделал 2 бэкапа. 1 — с помощью phpMyAdmin, 2 — через архивацию БД в админке блога. В итоге в первом случае у меня БД импортировалась не полностью, а во втором полностью... Отличаются ли эти бекапы друг от друга?..

            Ответить
          • АлаичЪ

            Вы меня не поняли. Вы сделали два одинаковых бекапа, но разными способами.

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

            У меня сервер настроен на удаленный бекап. То есть файлы архивируются вместе с файловой системой и отправляются на удаленный ftp. Это самый надежный вариант.

            Даже если ваш сервер убьет Баба Фрося, пролив ведро воды, ваши файлы будут храниться где-то в другом месте и не пропадут.

            Ответить
          • Сергей (22 комм.)

            У меня блог пока что на локальном сервере, но уже скоро перенесу его на хостинг... Надоела эта неразбериха...

            Ответить
          • АлаичЪ

            Понятно. Главное с хостером не промахнитесь. Могу посоветовать вам fastvps.ru

            Я именно у них взял себе сервер. А вам же для начала shared-хостинга хватит.

            Ответить
          • Сергей (22 комм.)

            Я уже выбрал для себя хостинг. Им будет sweb.ru! Хорошие цены и приветливая служба поддержки.

            Возьму на себя ответственность поделиться своей проблемой с блогом, которая началась вчера ночью спустя 30 минут после активации и настройки плагина WP-UserOnline, который подсчитывает количество посетителей на блоге. А проблема в следующем:

            Вчера около часа его редактировал, переводил, настраивал под себя… А под конец вдруг стал процессор на 100% грузиться! И это двухядерный! 2 с лишним гига каждый… В чем дело?… И главно если блог мой открыть через Internet Explorer, то все нормально! А если через оперу или Firefox, то начинает грузить…

            По данным плагина WP-Tuner, в Internet Explorer все таблицы помечены зеленым, а в других браузерах неординарно… По-началу желтым цветом подсветилось поле init в таблице Производительность генерации страницы (Порядок: хронологический), а на момент написания вопроса подсвеченные желтым цветом оказались поля Start и plugins_loaded из этой таблицы, а также желтым цветом подсветилось поле wp-settings.php из таблицы Производительность SQL запросов плагина / темы (Порядок: Время DB), а также wp_sitemeta из Производительность таблиц SQL (Порядок: Время DB)… Неужели опять придется переустановить WordPress?… Как это сделать, чтобы сохранить все настройки?… Что Вы мне можете посоветовать?…

            Прошу прщения за оффтоп…

            Ответить
          • АлаичЪ

            Когда то я хостился у них. Но потом ушел, потому, что аренда серверов у них невероятно высокая, по сравнению с другими. Хотя может сейчас ситуация другая, не изучал. Но для начала сойдет. Я, кстати, всем начинающим советую именно этот хостинг, так что вы на верном пути.

            Да уж, неприятная история. А плагин WP Super Cache стоит? Он спасает очень сильно. Еще в дополнение ко всем советую этот плагин http://alaev.info/post/511, так как вытаскивание из БД данных о юзерах он-лайн дело трудоемкое.

            А если ваш плагин отключить то ситуация стабилизируется с нагрузками?

            Ответить
          • Сергей (22 комм.)

            Очень странно! Убрал виджет плагина WP-UserOnline, деактивировал его, а когда захожу на блог, виджет все равно отображается и процессор начинает грузиться! Как такое может быть?.. Активировал плагин WP Super Cache, но не понял как им пользоваться...

            Ответить
          • АлаичЪ

            Ну он отображается потому, что он в кеше. Зайдите в настройки WP Super Cache и нажмите отчистить кэш (Delete Cache). Все обновится. И впредь знайте, что если вносите какие-то изменения и при этом WP Super Cache активен, то надо чистить кэш каждый раз. Или на время изменений отключить его совсем.

            Ответить
          • Сергей (22 комм.)

            Проблема решена!!! Просто я в настройках установил подсчет ботов! =) Вот из-за этого-то и все проблемы...=)))

            Ответить
    • Ezakol (1 комм.)

      Да самое полезное, как выделить комментарий автора, искал искал такой плагин, не нашел, эх буду теперь пробовать в свой бложик вставлять)) Спасибо!!))

      Ответить
  13. Panteam (2 комм.)

    Вот и у меня вопрос. У вас у всех комментаторов отсутствует url в комментарии. И только у вас он отображается. Это вы руками удаляете все ссылки или стоит какой-то хак или плагин чтобы можно было одним махом удалить все ссылки?

    Ответить
    • Panteam (2 комм.)

      Извиняюсь не досмотрел. Но а всё же... есть ли какой-то хак или плагин чтобы можно было одним махом удалить все ссылки?

      Ответить
      • АлаичЪ

        Хаков не видел, да и не искал никогда. Если вам надо массово удалить, то выход есть — phpMyAdmin и в таблице комментариев необходимое поле взять и зачистить. Еще проще составить mysql-запрос который бы необходимое поле взял и зачистил.

        Ответить
  14. artemeff (2 комм.)

    Очень полезная статья. от души благодарю автора.

    Но есть один нюанс, вы привели хаки для упрощения жизни автору блога и его читателям, но я бы порекомендовал Вам делать форму для добавления комментариев выше самих комментариев. Т.е. чтобы добавить коммент надо листать страницу со сотней записей.

    Ответить
    • АлаичЪ

      О, я думаю это не проблема. Спасибо, что обратили мое внимание на этот момент. Я перед комментариями сделаю ссылку на быстрый переход к форме комментирования. Сейчас глянем...

      Ответить
    • АлаичЪ

      Ну как? Так удобнее стало?

      Ответить
  15. Дмитрий (4 комм.)

    Как сделать, чтобы комментарии только в одном посте отображались в одном порядке. Чтобы на всем блоге были комментарии — последний внизу. А только в одном последний вверху. Уже все облазил, подскажите пожалуйста.

    Ответить
    • АлаичЪ

      Вот, честно говоря, не знаю, как это можно сделать. Наверное, и плагинов-то таких не существует. Если у вас есть программист, то можете попросить его, с алгоритмом реализации могу подсказать ;)

      Ответить
      • Дмитрий (4 комм.)

        К сожалению пока на данный момент я сам себе программер))) Ну буду пробовать терь у php-шников спрашивать коды, может кто подскажет. Мож и плагин дождусь, пока решу проблему.

        Ответить
        • АлаичЪ

          Моя идея состояла в том, чтобы обозначение глобального значения сортировки (asc или desc) могло определяться на уровне отдельной страницы. Видимо, надо будет добавить дополнительное поле в таблице с этой переменной, а потом это связать с глобальным значением. Как-то так.

          Ответить
  16. Geleosan (22 комм.)

    Приветствую!

    Использовал очень полезный хак "Добавляем полезные ссылки в комментарий". Он прекрасно работает для постов. Поставил и забыл, и только недавно обнаружил, что на страницах (у меня в них тоже разрешено комментирование) выдается ошибка, что мол Call to undefined function delete_comment_link () in \wp-includes\comment-template.php on line 1270. Хотя функция то описана.

    Буду очень рад, если есть идеи как это исправить.

    Ответить
  17. rainylive (2 комм.)

    Отличная статья.

    Один вопрос по поводу комментариев.

    Может вы мне подскажете решение. Необходимо реализовать возможность копировать ник комментатора в форму ответа на комментарий. Я подобное видел только на форумах, но отдельно скрипта найти не смог к сожалению.

    Может уже есть какое-то решение по этому поводу?

    И еще, может подскажете плагин позволяющий цитировать в комментариях?

    Спасибо

    Ответить
    • АлаичЪ

      Плагин позволяющий цитировать вот — http://wordpress.org/extend/plugins/quote-comments/

      А вот плагин ответа с вставкой ника — http://wordpress.org/extend/plugins/reply-to/

      Полагаю, что это именно то, что вы искали.

      Ответить
  18. Vovch (2 комм.)

    День добрый, подскажите как оформить HTML — код как у Вас на блоге? Какой плагин для этого нужен?

    Ответить
    • АлаичЪ

      Есть замечательный плагин — WP-Syntax — http://wordpress.org/extend/plugins/wp-syntax/

      Ответить
  19. WPixel (1 комм.)

    Собственно про подсветку коментариев атора. у меня коменты выводятся

    <ol class="commentlist">

    <?php wp_list_comments (

    array (

    'avatar_size' => 55,

    ));

    ?>

    </ol>

    Прописал стили как везде советуют для последних версий движка

    .byuser {color:#000;}

    .bypostauthor p{color:#990000;background:#ffd8d8;padding:5px;border: 1px dotted #999999;}

    проблема в том что при ответе на мой коментарий у отвечающего ответ получается с моими стилями, то есть как у админа. Как это можно поправить?

    Ответить
  20. Михаил (1 комм.)

    Здравствуйте. У меня вот какая проблема: на главной странице сверху вниз отображаются последние 7 записей(как надо), а потом идут с первой к последней в обратном порядке. Не знаю, что делать. Помогите...

    Ответить
  21. антон (1 комм.)

    Добрый день. Попробовал выделить комментарии автора, но в моем шаблоне нет строчки: php foreach comment as $comment) { … Даже не знаю что делать. А ещё попробовал делать по другому, но тоже немножко криво получилось. Почему то стили автора наследуют те комментарии, которые идут как ответ на авторский и ниже. Подсказал бы кто, как это исправить?

    Ответить
  22. Nurlan (1 комм.)

    Здравствуйте. У меня проблема другого характера. Уведомления о новых комментариях приходят, но в админке и на страницах записи ничего нет. Заменил шаблон и все так же. Погуглил, но не нашел ответа. Если возможно, отправьте ответ на эл.адрес.

    Ответить
    • АлаичЪ

      Возможно это спам-комментарии, которые сразу удаляются антиспам плагином, но при этом уведомления все равно приходят... Это как вариант.

      Ответить
  23. Сергей (1 комм.)

    Как у вас реализована ссылка "И Ты оставь свой комментарий", перекидывающая в конец ленты комментариев, стоящей перед комментариями?

    Ответить
    • АлаичЪ

      Там просто стоит ссылка с якорем, указывающем на id контейнера с формой комментирования. Можете исходный код посмотреть.

      Ответить
  24. алксей (1 комм.)

    Кто не знает как убирать модерацию, открываю секрет. Целый день мучился. Пока вы не отключите все плагины, защищающие вас от спама, модерация не пропадет, как бы вы не старались!!!

    Ответить
  25. Виктор (1 комм.)

    Скажите, а как изменить сортировку комментариев? Хочу, чтобы они выводились в обратном порядке — самый свежий сверху, а не внизу.

    Ответить
  26. Юрий (1 комм.)

    Александр, а не подскажете, как выделить комментарии нескольких авторов блога по их e-mail?

    Ответить
Оставь комментарий или спроси через Twitter →

· Малоинформативные комментарии или комментарии, не содержащие вопрос, удаляются.
· В поле URL оставляйте ссылку только на свой сайт/блог. Эта ссылка для админа, посетители ее не увидят.
· Любой html-код отображается в виде текста, любые ссылки неактивны.
· Для спаммеров - БЛОГ НЕ DOFOLLOW!!!