Ананімная сістэма каментарыяў (плагін) для WordPress — без пароляў і рэгістрацыі
праект
SDWSKi Comments — плагін для WordPress, у якім можна каментаваць без пароля, без рэгістрацыі і без акаўнта ў WordPress: дастаткова ўвесці email і код з ліста.
Большасць сістэм каментарыяў просяць чытача прыдумаць пароль, пацвердзіць пошту, паставіць пяць птушак у знак згоды або ўвайсці праз сацсетку. У выніку чалавек, якому было што сказаць, закрывае ўкладку. Мы пайшлі ад адваротнага: уваход павінен займаць паўхвіліны, а сайт павінен ведаць пра чалавека як мага менш.
Плагін напісаны для ўласнага сайта SDWSKi і працуе на ім кожны дзень. Ён не падключае знешнія сэрвісы, не загружае шрыфты і аватары са старонніх сервераў, не запавольвае старонкі і спакойна працуе разам з плагінамі кэшавання.
Як гэта выглядае для чытача
Чытач уваходзіць у тры крокі, і больш нічога запамінаць не трэба.
- Уводзіць email і ставіць птушку ў знак згоды — адну, са спасылкай на палітыку прыватнасці.
- Атрымлівае на пошту шасцізначны код (літары і лічбы, напрыклад
ABC123) і ўводзіць яго. - Піша каментарый і націскае «Адправіць».
Пароля няма ўвогуле: няма чаго забываць, аднаўляць і няма чаму трапіць ва ўцечку. Пасля першага ўваходу сайт памятае чытача 30 дзён, і наступны каментарый можна напісаць у адзін клік. Калі ліста няма некалькі хвілін, форма прапануе зазірнуць у «Спам» і «Промаакцыі», а кнопка «Адправіць зноў» становіцца даступнай праз хвіліну. Калі памыліліся ў адрасе — «← Змяніць email».
Пакуль сесія запускаецца, старонка не міргае: форма ўваходу з’яўляецца толькі таму, хто яшчэ не ўвайшоў.
Ананімнасць і прыватнасць
Для іншых чытачоў каментатар застаецца ананімным: публічна бачныя толькі імя і тэкст, email нідзе не паказваецца. Пра гэта так і напісана непасрэдна пад формай. Поўнай ананімнасці перад уладальнікам сайта няма, і мы гэтага не абяцаем: email патрэбны, каб даслаць код і аддзяліць жывых людзей ад спаму. Затое ўсё астатняе зроблена так, каб збіраць мінімум звестак пра чалавека.
- Ніякіх старонніх запытаў. Няма Google Fonts, няма Gravatar, няма трэкераў. Шрыфт бярэцца з тэмы сайта, аватар ствараецца на месцы — літара на нейтральным фоне. Хэш адраса не трапляе ні ў HTML, ні ў адказы сервера.
- IP і User-Agent не захоўваюцца.
- Адзін файл cookie.
dc_sessionусталёўваецца толькі пасля ўводу кода, гэта тэхнічны файл cookie для ўваходу (HttpOnly,SameSite=Lax,Secureпраз HTTPS). - Згода запісваецца на серверы: калі і з якой версіяй умоў чалавек пагадзіўся. Абыход праз браўзер не спрацуе.
- Усё сваё — у адным месцы. У асабістым кабінеце чалавек можа змяніць імя, спампаваць усе свае даныя ў выглядзе файла JSON або націснуць «Выдаліць уліковы запіс і даныя». Тады выдаляюцца профіль, каментарыі з адказамі, упадабайкі, сеансы і коды.
- Выдаленне ўласнага каментарыя — канчатковае. Не «схавана», а сцёрта з базы.
- Адмовіцца ад рассылкі — адным клікам, пры гэтым у спісе тых, хто адпісаўся, захоўваецца хэш, а не сам адрас.
Адна дэталь, якую варта ведаць: пры першым уваходзе імя, якое адлюстроўваецца, бярэцца з часткі адраса перад «@». Калі пошта выгляду ivan.petrov@…, лепш адразу зайсці ў «Мае даныя» і замяніць яго на нік — так пад тэкстам застанецца тое, што вы выбралі самі.
Зручнасць і камфорт
Усё, што патрэбна для нармальнай размовы, ёсць, і нічога лішняга. Дызайн мінімалістычны: тонкія лініі замест картак, чорна-белыя кнопкі, акцэнт толькі на фокусе і лайку.
- Адказы. Адзін узровень укладзенасці, як у большасці медыя: галінка не ператвараецца ў лесвіцу і застаецца чытэльнай на тэлефоне.
- Лайкі. Госць бачыць лічыльнік, а карыстальнік, які ўвайшоў, можа паставіць або зняць лайк.
- Апавяшчэнні пра адказы. Калі хтосьці адказвае на ваш каментарый, прыходзіць ліст са спасылкай на абмеркаванне. Адпісацца можна адным клікам.
- Загрузка па 20 штук. Доўгая дыскусія не загружаецца ўся адразу: далей — кнопка «Загрузіць яшчэ».
- Светлая і цёмная тэма. Колеры і шрыфт успадкоўваюцца ад тэмы сайта і пераключаюцца разам з ёй. Каб дапасаваць плагін да іншага дызайну, дастаткова змяніць пару зменных у
base.css. - Даступнасць. Подпісы для скрынрыдараў, aria-атрыбуты, паведамленні пра памылкі і статусы непасрэдна ў форме, без усплывальных вокнаў.
- Шматмоўнасць. Калі на сайце ўсталяваны плагін перакладу SDWSKI.com Translate, каментарыі падзяляюцца паводле моў: у рускай версіі бачныя рускія, у літоўскай — літоўскія. Спасылкі ў лістах вядуць на патрэбную моўную версію запісу. Без гэтага плагіна ўсё працуе як звычайна.
Ёсць і дадатковыя шорткоды: асобная форма ўваходу, асабісты кабінет, апошнія каментарыі на сайце, каментарыі бягучага чытача.
Як уладкаваны плагін
Старонка застаецца статычнай, а каментары жывуць асобна: таму плагін не замінае кэшу.
Кэш аддае старонку як звычайна, затым скрыпт у браўзеры запытвае ў admin-ajax.php сесію і стужку. Гэты адрас стандартны для WordPress і заўсёды абыходзіць кэш, таму LiteSpeed Cache і WP Rocket чапаць не трэба.
- Уваход. Код з 6 сімвалаў дзейнічае 15 хвілін, на ўвод даецца 5 спроб, паўторна яго можна запытаць не часцей за адзін раз на хвіліну. Сесія — выпадковы токен: у
HttpOnly-cookie і ў базе, на 30 дзён. Пратэрмінаваныя сесіі і коды выдаляе штодзённае заданне WP-Cron. - Абарона. Усе SQL-запыты праходзяць праз
$wpdb->prepare(), з тэксту каментарыя выразаецца ўвесь HTML, для кожнага POST-запыту правяраецца nonce. - Кэш. Спісы і лічыльнікі кэшуюцца з улікам мовы і скідаюцца пры кожным новым каментарыі. LiteSpeed Cache таксама пра гэта даведваецца.
- Уласная база. Чытачы і каментарыі захоўваюцца ў пяці ўласных табліцах, а не ў
wp_commentsі не сярод карыстальнікаў WordPress. Таму чытачы ніяк не перасякаюцца з уліковымі запісамі сайта.
Каму падыдзе
Плагін карысны там, дзе каментарыі — частка размовы з чытачом, а не палігон для спаму і спрэчак.
- Аўтарам блогаў і часопісаў на WordPress, якім надакучылі палі «Імя, Email, Сайт» і безаблічныя выявы-аватары.
- Праектам у Еўропе, дзе важныя GDPR і чыстая база: згода, экспарт і выдаленне даных рэалізаваныя адразу, а таксама праз інструменты экспарту і выдалення персанальных даных WordPress.
- Шматмоўным сайтам, дзе кожная моўная версія павінна жыць сваім жыццём.
- Тым, хто выкарыстоўвае агрэсіўнае кэшаванне (LiteSpeed Cache, WP Rocket): старонкі застаюцца статычнымі, каментарыі падгружаюцца асобна.
- Тым, хто хоча незалежнасці: ні старонніх сэрвісаў, ні падпісак — усё захоўваецца ў вашай базе.
Уладальніку сайта таксама ёсць што атрымаць: мадэрацыю ў панэлі адміністратара (новыя каментарыі можна спачатку правяраць), спіс карыстальнікаў з магчымасцю блакіравання, пазнакі (badge) у аўтараў, фільтр паводле мовы і сметніцу, дзе выдаленыя мадэратарам каментарыі захоўваюцца 30 дзён, а потым аўтаматычна сціраюцца. Коды адпраўляюцца праз ваш звычайны паштовы механізм WordPress, таму варта наладзіць SMTP: код павінен даходзіць хутка.
Усталяванне і наладжванне
Усталяванне займае пару хвілін: змясціць папку sdwski-comments ў /wp-content/plugins/, актываваць яе ў адмінцы — табліцы ў базе створацца самі. Пры абнаўленні файлы проста замяняюцца, база абновіцца да патрэбнай версіі.
Па змаўчанні раздзел каментарыяў з'яўляецца пад кожным запісам, а штатныя каментарыі WordPress адключаюцца. У «Налады → SDWSKi Comments» можна ўключыць прэмадэрацыю, выбраць, куды будуць весці спасылкі на палітыку прыватнасці, пагадненне, асабісты кабінет і старонку бяспекі, а калі аўтаматычнае размяшчэнне не патрэбнае — выключыць яго і ўстаўляць шорткод там, дзе хочацца. Тэкст для палітыкі прыватнасці плагін сам дадае ў кіраўніцтва WordPress.
Хочаце такую сістэму каментарыяў сабе на сайт? Напішыце мне.
А яшчэ можна паглядзець, як SDWSKi Каментары працуе ў маім блогу ці ў мужчынскім часопісе Doberman Media.