Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Cохранение и подстановка имени и эл. почты комментатора в WordPress через jQuery (https://javascript.ru/forum/jquery/72202-cokhranenie-i-podstanovka-imeni-i-ehl-pochty-kommentatora-v-wordpress-cherez-jquery.html)

12345678 15.01.2018 16:45

Cохранение и подстановка имени и эл. почты комментатора в WordPress через jQuery
 
Доброго времени суток, уважаемые гуру.

Мне необходимо запоминать введённые данные комментатора (Имя и электронная почта) и подставлять их на других страницах. Сейчас этого не происходит из-за использования кеширующего плагина.

Вот такой скрипт я подчеркнул http://dimox.name/jquery-script-cook...ress-maxcache/

var $j = jQuery.noConflict();
 
$j(function() {
 
  var author = readCookie('wp_commenter_author');
  var email = readCookie('wp_commenter_email');
  var url = readCookie('wp_commenter_url');
 
  if (author) $j('input[name="author"]').val(author);
  if (email) $j('input[name="email"]').val(email);
  if (url) $j('input[name="url"]').val(url);
 
  $j('#commentform').submit(function() {
    if ($j('input[name="author"]').length) createCookie('wp_commenter_author', $j('input[name="author"]').val(), 365);
    if ($j('input[name="email"]').length) createCookie('wp_commenter_email', $j('input[name="email"]').val(), 365);
    if ($j('input[name="url"]').length) createCookie('wp_commenter_url', $j('input[name="url"]').val(), 365);
  });
 
})


Я его переделал, руководствуясь своими очень скоромными познаниями в JS:

jQuery(function() {
 
  var author = readCookie('wp_commenter_author');
  var email = readCookie('wp_commenter_email');
 
  if (author) jQuery('input[name="author"]').val(author);
  if (email) jQuery('input[name="email"]').val(email);
 
  jQuery('#commentform').submit(function() {
    if (jQuery('input[name="author"]').length) createCookie('wp_commenter_author', jQuery('input[name="author"]').val(), 365);
    if (jQuery('input[name="email"]').length) createCookie('wp_commenter_email', jQuery('input[name="email"]').val(), 365);
  });
 
})


Но почему то пишет в консоле ошибку "readCookie" не определено и соответственно скрипт свою функцию не выполняет. Как правильно должно быть?

Nexus 15.01.2018 17:13

На странице нет функций "readCookie" и "createCookie".

Вставьте эти функции до своего кода:
function cookie(name,value,days){
    if(value){
        var expires="";
        if(days){
            var date=new Date();
            date.setTime(date.getTime()+(days*24*3600*1000));
            expires="; expires="+date.toGMTString();
        }
        document.cookie=name+"="+value+expires+"; path=/";
 
        return true;
    }else{
        var nameEQ=name+"=";
        var ca=document.cookie.split(';');
        for(var i=0;i<ca.length;i++){
            var c=ca[i];
            while(c.charAt(0)==' ') c=c.substring(1,c.length);
            if(c.indexOf(nameEQ)==0) return c.substring(nameEQ.length,c.length);
        }
 
        return null;
    }
};


function readCookie(name){
	return cookie(name);
}
function createCookie(name,value,days){
	return cookie(name,value,days);
}

12345678 15.01.2018 17:48

Nexus

Большое спасибо! Так работает как положено :-)


Часовой пояс GMT +3, время: 10:02.