Проблема с комментариями в русском WordPress

wordpress-icon-96После перевода моих русскоязычных сайтов на новые версии WordPress 2.2.x, проявилась странная проблема с публикацией комментариев.

При отсылке комментария незарегистрированным пользователем (и только им) и если комментарий сразу не попадает в спам Акисмета, то пользователь видит пустую страницу. При возврате в пост, его комментария с надписью, что последний модерируется не видно. Админ не получает уведомления о комменте на модерацию, но в панели управления коммент виден на стадии модерации.

Провел ряд экспериментов на двух разных хостингах (MySQL c UTF-8 и MySQL c Win-1251):

  1. Проблема проявилась сразу после чистой инсталляции WP со стандартной темой.
  2. Проявилась она только на хостинге, где MySQL c UTF-8.
  3. Проблемными оказались только руссифицированные версии (обе сборки: от maxsite.org и mywordpress.ru), английская версия устанавливается и работает без проблем.
  4. При подключении английской версии к базе проблемной русской версии глюк остается.

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

Частично проблему можно решить хирургическим путем, предложенным товарищем Vlad-ом. Необходимо в файле wp-includes\comment.php найти строку с номером 400 и удалить следующий кусок кода, оказавшийся глючным:

if ( ‘spam’ !== $commentdata[‘comment_approved’] )
{ // If it’s spam save it silently for later crunching
if ( ‘0’ == $commentdata[‘comment_approved’] )
wp_notify_moderator($comment_ID);

$post = &get_post($commentdata[‘comment_post_ID’]);
// Don’t notify if it’s your own comment

if ( get_option(‘comments_notify’) &&
$commentdata[‘comment_approved’] &&
$post->post_author != $commentdata[‘user_ID’] )
wp_notify_postauthor($comment_ID,
$commentdata[‘comment_type’]);
}

По крайней мере, пользователь после отправки комментария не попадает на пустую страницу и видит свой коммент с пометкой о модерации, но администратор блога не получает уведомления о новом комментарии. Возможно, проблему можно решить не удалением, а исправлением приведенного кода. Исследования продолжаются.

Update: вот альтернативный вариант решения проблемы без хирургического вмешательства »




комментариев 7

Подписаться на комментарии (RSS)

  1. Комментирует Андрей
    24.07.2008 в 16:41
    Ответить · Ссылка

    Спасибо за информацию. Пригодилась.

  2. Комментирует Алексей
    09.04.2009 в 16:50
    Ответить · Ссылка

    Реально, информация пригодилась.

  3. Комментирует Алексей
    09.04.2009 в 16:53
    Ответить · Ссылка

    Кто знает, кто такой Николай Мясник ?

  4. Комментирует Алексей
    09.04.2009 в 16:57
    Ответить · Ссылка

    Н-да, дикая посещаемость сайта окончательно снесла крышу Гоблину. Полагаю, мы наблюдаем начало заката Тупичка. А жаль.

  5. Комментирует Александр
    22.05.2009 в 13:53
    Ответить · Ссылка

    Алексей, что лень страницу обо мне открыть?

  6. Комментирует Андрей
    30.06.2009 в 18:30
    Ответить · Ссылка

    Блин попал я тоже с этим мсхостом, сейчас вп 2,8 как на нем можно белый лист убрать? Прошло почти 2 года с момента написания статьи а на мсхосте так же с комментариями траблы :( обидно.

  7. Комментирует MyasNick
    30.06.2009 в 23:39
    Ответить · Ссылка

    Как и два года назад wpPHPMailer спасёт отца русской демократии (см. апдейт в конце поста).

Подписаться на комментарии (RSS)

Написать комментарий