• Открыта запись на вторую часть курса по анонимности и безопасности в сети интернет "Paranoid II" от команды codeby. Анонимные роутеры, Подъём, настройка и администрирование Tor-ноды, Работа с железом ПК, Удаление аппаратных закладок, Минимизация рисков, Авторские разработки и многое другое. Подробнее ...

  • Напоминаем, что 1 декабря стартует курс "Тестирование Веб-Приложений на проникновение с нуля" от команды codeby. Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, активный фаззинг, уязвимости, пост-эксплуатация, инструментальные средства, Social Engeneering и многое другое. Подробнее ...

Включение в WordPress возможности редактировать и удалять комментарии посетителями

P

Pirnazar

Well-known member
18.07.2018
179
189
Вторая вещь, которая меня поражает в WordPress — это невозможность даже для зарегистрированных пользователей редактировать свои комментарии (первая — невозможность установить свой аватар без сторонних сервисов).

Эта инструкция и посвящена тому, как разрешить посетителям редактировать свои комментарии в WordPress.

Simple Comment Editing for WordPress

Нам нужен плагин Simple Comment Editing. Устанавливаете и активируете его. Теперь каждый автор комментария видит для своего комментария обратный отсчёт, показывающий, сколько времени у него осталось для редактирования комментария. По умолчанию, это пять минут.

Включение в WordPress возможности редактировать и удалять комментарии посетителями


Если вас это устраивает — отлично. Если хотите что-то изменить, то вас ждёт сюрприз — страницы настроек у плагина нет. Тем не менее, настройки можно менять. Перейдите к списку плагинов (Плагины -> Установленные), найдите там 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';
Получается так:
Включение в WordPress возможности редактировать и удалять комментарии посетителями


Включение в WordPress возможности редактировать и удалять комментарии посетителями


Понятно, что можно переместить надпись в другое место, настроить стили для неё и прочее.

Важное замечание — поскольку мы редактируем исходный код, а не файл с настройками, то при обновлении плагина все изменения будут теряться!

Для этого плагина доступны следующие фильтры:
  • 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 — Как долго разрешать редактировать комментарий (в минутах)
Другие возможности и примеры на официальной странице плагина:
 
Мы в соцсетях:  ТелеграмВконтактеДзенФейсбукТвиттерЮтуб