я делаю так:
кастомная таблица, куда пишем - дата, id записи, ip пользователя, id пользователя, оценку (+1/-1);
небольшой скрипт на фронте, который шлет ajax запрос по клику на кнопке;
ловим запрос, добавляем полученное в эту таблицу, добавляем к этому посту мета поле с новым количеством лайков (чтоб каждый раз не дергать базу с подсчетом, лучше кэшировать в этом поле);
после возвращаем ответ с новым к-вом лайков, ставим куку клиенту, что он уже голосовал.
если самому писать не надо, примерно такой же подход у этого плагина
https://ru.wordpress.org/plugins/wp-postratings/
можно взять его и настроить.