Проблема с комментариями в русском 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: вот альтернативный вариант решения проблемы без хирургического вмешательства »

08.10.2007   WordPressионизм, Ваше БЛОГородие   2 комментария(-ев)

2 комментария(-ев)

  1. Старые проблемы с комментами в WordPress - МясNick Online - 17.04.2008

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

  2. Андрей - 24.07.2008

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

Оставить комментарий

 

 

 

CAPTCHA image