Ограничение typeform на одну отправку в сообщении WordPress

#wordpress #cookies #typeform

#wordpress #файлы cookie #typeform

Вопрос:

Имейте простую форму типа, встроенную в сообщение в WordPress. Ничего особенного вообще. Код для встраивания, извлеченный непосредственно из Typeform.

Однако пользователи могут отправлять несколько раз. ie. Теоретически один человек может сделать это 100 раз.

Typeform сообщил, что cookie решит эту проблему и ограничит пользователя одной отправкой, но на самом деле не знаю, с чего начать. Есть ли простое и быстрое решение, которое могло бы это сделать? Любые идеи приветствуются!

Ответ №1:

Одним из решений может быть отображение встроенной формы типа только в том случае, если файл cookie не существует.

не совсем уверен, как вы это сделаете в WordPress.

Но логика:

 const embedElement = document.querySelector('.target-dom-node') 
const displayed = getCookie("displayed_typeform");
if (displayed){
  embedElement.innerHTML="<h2>Typeform already displayed once.</h2>"
} else if(!displayed amp;amp; displayed === "") {
  setCookie("displayed_typeform", true, 365);
  showEmbed();
}
  

setCookie и getCookie это две функции, которые занимаются управлением файлами cookie

 function setCookie(cname, cvalue, exdays) { 
    var d = new Date();
    d.setTime(d.getTime()   (exdays*24*60*60*1000));
    var expires = "expires="  d.toUTCString();
    document.cookie = cname   "="   cvalue   ";"   expires   ";path=/";
}
  
 function getCookie(cname) {
    var name = cname   "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i <ca.length; i  ) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}
  

Вы можете найти полный проект, который демонстрирует эту функцию здесь .