Вторая вещь, которая меня поражает в WordPress — это невозможность даже для зарегистрированных пользователей редактировать свои комментарии (первая — невозможность установить свой аватар без сторонних сервисов).
Эта инструкция и посвящена тому,
как разрешить посетителям редактировать свои комментарии в WordPress.
Simple Comment Editing for WordPress
Нам нужен плагин
Simple Comment Editing. Устанавливаете и активируете его. Теперь каждый автор комментария видит для своего комментария обратный отсчёт, показывающий, сколько времени у него осталось для редактирования комментария. По умолчанию, это пять минут.
Если вас это устраивает — отлично. Если хотите что-то изменить, то вас ждёт сюрприз — страницы настроек у плагина нет. Тем не менее, настройки можно менять. Перейдите к списку плагинов (Плагины -> Установленные), найдите там Simple Comment Editing и выберите «
Изменить».
Откроется исходный код одной из страницы плагинов — он то нам и нужен. Если вы хотите увеличить доступное для редактирования время, то найдите строку
PHP:
$comment_time = absint( apply_filters( 'sce_comment_time', 5 ) );
В ней цифру 5 замените на любое желаемое время. Максимальное значение — 90.
PHP:
$comment_time = absint( apply_filters( 'sce_comment_time', 90 ) );
Если посмотреть следующие строчки
PHP:
if ( $comment_time > 90 ) {
$this->comment_time = 90;
} else {
$this->comment_time = $comment_time;
}
То становится понятно, как с лёгкостью это ограничение снять.
Есть ещё один полезный фильтр —
sce_allow_delete. Он устанавливает, могут ли пользователи удалять свои комментарии. По умолчанию он включен на «пользователи могут удалять свои комментарии». Если вы хотите это изменить, то строку
PHP:
private $allow_delete = true;
поменяйте на
PHP:
private $allow_delete = false;
Даже при включенной этой настройки нет никакой кнопки для удаления комментария. Оказывается, порядок удаления следующий: пользователь сохраняет пустой комментарий, при этом у него возникает запрос — хочет ли он его удалить. Согласитесь, если бы я не сказал, не каждый бы догадался.
Мы можем проинформировать пользователей об этой возможности. Для этого найдите строку
PHP:
$textarea_buttons .= sprintf( '<button class="sce-comment-cancel">%s</button>', esc_html__( 'Cancel', 'simple-comment-editing' ) );
И сразу после неё добавьте ещё одну:
PHP:
$textarea_buttons .= '<div>Для удаления комментария просто сохраните пустой комментарий.</div';
Получается так:
Понятно, что можно переместить надпись в другое место, настроить стили для неё и прочее.
Важное замечание — поскольку мы редактируем исходный код, а не файл с настройками, то
при обновлении плагина все изменения будут теряться!
Для этого плагина доступны следующие фильтры:
- sce_loading_img — Изменение загрузочного изображения
- sce_comment_check_errors — Добавление пользовательских сообщений ошибок
- sce_allow_delete — Позволять удалять комментарии или нет
- sce_get_comment — Добавить дополнительные данные в объект комментария
- sce_extra_fields — Добавить дополнительный HTML в интерфейс редактирования
- sce_buttons — Добавить дополнительные кнопки в интерфейс редактирования (помимо Отмена и Сохранить)
- sce_content — Модифицировать отредактированный вывод HTML
- sce_save_before — Модифицировать объект комментария перед сохранением через AJAX
- sce_can_edit — Может пользователь редактировать комментарий или нет
- sce_security_key_min — Как много ключей безопасности будут сохранены как метаданные поста
- sce_load_scripts — Загружать скрипт SCE или нет
- sce_comment_time — Как долго разрешать редактировать комментарий (в минутах)
Другие возможности и примеры на официальной странице плагина:
ronalfy/simple-comment-editing
Комментарии
1