Pull to refresh

Пара плагинов, исправляющих косяки в новом (и не совсем новом) Wordpress

Reading time 2 min
Views 869
Для корпоративного блога я решил выбрать последнюю версию Wordpress 2.2.1 (многие дыры там подлатаны). Скачав ее и протестировав, я столкнулся с парой неприятных косяков. В итоге, не будучи программистом, написал два плагина.

Плагин: Novikov's OLD OPERA Commenting Page Refresh Bugfix
Версия: 0,9

В чем проблема:

В новых версиях Wordpress после добавления комментариев перенаправляет пользователя не просто на ту же страницу, а сразу к добавленному комментарию.

Делается это при помощи HTTP-заголовка, в котором отдается код 304, а в качестве location указывается URL страницы с комментариями. В новых версиях Wordpress для перенаправления к конкретному комментарию в location вставляется конструкция вида "#comment-id".
Старая «Опера» (тестировал на версии 8.5), по-видимому, испытывает проблемы с символом "#" в location: при добавлении комментария в первый раз она может успешно обновить страницу. Но в следующий раз страница уже не обновляется.

Комментарий попадает в базу, но для пользователя все выглядит так, как будто бы сайт завис, а комментарий пропал. Это приводит к повторным отправкам, да и просто выглядит некрасиво.

Что делает этот плагин:

Если у пользователя старая «Опера», то плагин убирает из location решетку и все, что идет после нее. Таким образом, старая «Опера» обновит успешно страницу, а ее обладатели будут перенаправлены, но не к добавленному комментарию, а просто к началу страницы, как раньше. Пользователи других браузеров ничего не заметят.

Когда пользователь добавляет комментарий, вызывается файл «wp_comment_post.php». В нем находятся разные функции, которые этот комментарий обрабатывают, помещают в базу, а затем вызывают функцию wp_redirect. В качестве аргумента этой функции передается location — строка, содержащая URL страницы поста и хвостик "#comment-id".
Перед тем, как будет вызвана функция wp_redirect, аргумент обрабатывается фильтром comment_post_redirect. Плагин регистрирует свою функцию в качестве этого фильтра, и если у пользователя «Опера» меньше девятой версии, то просто откусывает у location «хвостик». Теперь все счастливы.
*********************************

Плагин: Novikov's FROM Krjakozjabri Bugfix
Версия: 0,9

В чем проблема:

Когда Wordpress отправляет автору поста email о новых комментариях, в поле From заголовка письма вставляется имя комментатора. Русские буквы превращаются в крякозябры, которые нечитабельны.
Кажется, авторы Wordpress немного накосячили в функции wp_notify_postauthor, которая формирует заголовок email. Сперва у них вставляется «MIME-Version: 1.0», а потом уже идет поле FROM, хотя обычно наоборот.

Что делает этот плагин:

К счастью, функцию wp_notify_postauthor можно заменять. Она находится в файле «wp-includes\pluggable.php», то есть, ее можно переопределить посредством плагина, а не хакать движок.
Собственно, плагин и переопределяет данную функцию, делая поле FROM в уведомлениях красивым. Теперь русские буквы выглядят нормально.
Tags:
Hubs:
+6
Comments 6
Comments Comments 6

Articles