Проблема с комментариями в русском WordPress
После перевода моих русскоязычных сайтов на новые версии WordPress 2.2.x, проявилась странная проблема с публикацией комментариев.
При отсылке комментария незарегистрированным пользователем (и только им) и если комментарий сразу не попадает в спам Акисмета, то пользователь видит пустую страницу. При возврате в пост, его комментария с надписью, что последний модерируется не видно. Админ не получает уведомления о комменте на модерацию, но в панели управления коммент виден на стадии модерации.
Провел ряд экспериментов на двух разных хостингах (MySQL c UTF-8 и MySQL c Win-1251):
- Проблема проявилась сразу после чистой инсталляции WP со стандартной темой.
- Проявилась она только на хостинге, где MySQL c UTF-8.
- Проблемными оказались только руссифицированные версии (обе сборки: от maxsite.org и mywordpress.ru), английская версия устанавливается и работает без проблем.
- При подключении английской версии к базе проблемной русской версии глюк остается.
В ходе обсуждений на форумах поддержки обоих сборок (вот здесь и еще тут) выяснилась интересная подробность. Проблема проявляется пока только у клиентов хостинг-провайдера 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 commentif ( 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 комментария(-ев)
Старые проблемы с комментами в WordPress - МясNick Online - 17.04.2008
[...] Как я уже писал, при определенных условиях во время отсылки комментария незарегистрированным пользователем, последний видит пустую страницу. При возврате в пост, его комментария с надписью, что последний модерируется не видно, админ блога не получает уведомления о комменте на модерацию, но в панели управления коммент виден на стадии модерации. [...]
Спасибо за информацию. Пригодилась.
Оставить комментарий