Wordpressで、google anlaytics に対応させた formのプラグインを探してて、下のurlを見つけた。

http://wordpress.org/support/topic/277808?replies=20 で、やりとりを見てて、作者のwebsiteにいったら、日本語はこちらというリンクがあった。 作者は日本人(博多の人)で、英語と日本語の両方で質問に答えたりしてた。 すごいなあ。

で、上のフォーラムの通り、pluginのsettingページのadditional settingsに所に、

on_sent_ok “pageTracker._trackPageview(‘/contacted’);”

とセットし、フォームを実行させた。 でも、”illegal character”というjavascriptのerrorになった。文字列のevalの所がエラーになる。 (後で、張り直したら、問題なかった。変な文字が入っていたのだろうか??コピペの時にそのような事が起こる可能性あるのかな?)

で、ともかく、このpluginをみていると、 “xml/http-request”のpostメソッドで、送っていて、jsonを返す作業をしてる。 wpcf7ProcessJsonが、返された値を引数にしてcallbackされる。とまでは、わかった。 なので、callback関数のwpcf7ProcessJsonの中に

pageTracker._trackPageview('/contacted')

と書いたコードをいれた。 ついでに、エラーとかにもそれっぽいvirtualPageviewをいれて、やり過ごす形にした。 一応、google-analyticsのデータは飛んでるよう。

これで、フォームの正常と失敗の送信をgoogle analyticsでtrackingできるし、コンバージョンの発生も計れる。

なぜかその後、消し忘れていた additional-settingsのpageTrackerも正常に動き出した。 donateというボタンがあったので、http://pledgie.com/ を経由して、paypalでペットボトル二本分を送った。

下のコードは、wordpressの禁止文字???に引っかからないように、execをexecXXXと入れ替えた。

こんなエラーがでてた。”mod_security: Access denied with code 503. Pattern match “(echo( |\\\\(|\\\\’).*\\\\;|chr|fwrite|fopen|system|echr|passthru|popen|proc_open|shell_exec|exec|proc_nice|proc_terminate|proc_get_status|proc_close|pfsockopen|leak|apache_child_terminate|posix_kill|posix_mkfifo|posix_setpgid|posix_setsid|posix_setuid|phpinfo)\\\\(.*\\\\)\\\\;”

function wpcf7ProcessJson(data) {
  var wpcf7ResponseOutput = jQuery(data.into).find('div.wpcf7-response-output');
  wpcf7ClearResponseOutput();
if (data.invalids) {
  pageTracker._trackPageview('/contact/invalids');
  jQuery.each(data.invalids, function(i, n) {
     wpcf7NotValidTip(jQuery(data.into).find(n.into), n.message);
  });
  wpcf7ResponseOutput.addClass('wpcf7-validation-errors');
}
if (data.captcha) {
  pageTracker._trackPageview('/contact/captcha');
  jQuery.each(data.captcha, function(i, n) {
  jQuery(data.into).find(':input[name="' + i + '"]').clearFields();
  jQuery(data.into).find('img.wpcf7-captcha-' + i).attr('src', n);
  var match = /([0-9]+)\.(png|gif|jpeg)$/.execXXX(n);
  jQuery(data.into).find('input:hidden[name="_wpcf7_captcha_challenge_' + i + '"]').attr('value', match[1]);
  });
}
if (data.quiz) {
  pageTracker._trackPageview('/contact/quiz');
  jQuery.each(data.quiz, function(i, n) {
  jQuery(data.into).find(':input[name="' + i + '"]').clearFields();
  jQuery(data.into).find(':input[name="' + i + '"]').siblings('span.wpcf7-quiz-label').text(n[0]);
  jQuery(data.into).find('input:hidden[name="_wpcf7_quiz_answer_' + i + '"]').attr('value', n[1]);
  });
}
if (1 == data.spam) {
  pageTracker._trackPageview('/contact/spam');
  wpcf7ResponseOutput.addClass('wpcf7-spam-blocked');
}
if (1 == data.mailSent) {
  pageTracker._trackPageview('/contact/mailsent');
  jQuery(data.into).find('form').resetForm().clearForm();
  wpcf7ResponseOutput.addClass('wpcf7-mail-sent-ok'); 

if (data.onSentOk)
  jQuery.each(data.onSentOk, function(i, n) { eval(n) });
  } else {
  wpcf7ResponseOutput.addClass('wpcf7-mail-sent-ng');
}
wpcf7ResponseOutput.append(data.message).fadeIn('fast');
}
function wpcf7ProcessJson(data) {
  var wpcf7ResponseOutput = jQuery(data.into).find('div.wpcf7-response-output');
  wpcf7ClearResponseOutput();
  if (data.invalids) {
    pageTracker._trackPageview('/contact/invalids');
    jQuery.each(data.invalids, function(i, n) {
      wpcf7NotValidTip(jQuery(data.into).find(n.into), n.message);
    });
wpcf7ResponseOutput.addClass('wpcf7-validation-errors');
}
if (data.captcha) {
  pageTracker._trackPageview('/contact/captcha');
  jQuery.each(data.captcha, function(i, n) {
  jQuery(data.into).find(':input[name="' + i + '"]').clearFields();
  jQuery(data.into).find('img.wpcf7-captcha-' + i).attr('src', n);
  var match = /([0-9]+)\.(png|gif|jpeg)$/.execXXX(n);
  jQuery(data.into).find('input:hidden[name="_wpcf7_captcha_challenge_' + i + '"]').attr('value', match[1]);
});
}
if (data.quiz) {
  pageTracker._trackPageview('/contact/quiz');
  jQuery.each(data.quiz, function(i, n) {
  jQuery(data.into).find(':input[name="' + i + '"]').clearFields();
  jQuery(data.into).find(':input[name="' + i + '"]').siblings('span.wpcf7-quiz-label').text(n[0\
]);
  jQuery(data.into).find('input:hidden[name="_wpcf7_quiz_answer_' + i + '"]').attr('value', n[1\
]);
});
}
if (1 == data.spam) {
  pageTracker._trackPageview('/contact/spam');
  wpcf7ResponseOutput.addClass('wpcf7-spam-blocked');
}
if (1 == data.mailSent) {
  pageTracker._trackPageview('/contact/mailsent');
  jQuery(data.into).find('form').resetForm().clearForm();
  wpcf7ResponseOutput.addClass('wpcf7-mail-sent-ok');

if (data.onSentOk)
  jQuery.each(data.onSentOk, function(i, n) { eval(n) });
} else {
  wpcf7ResponseOutput.addClass('wpcf7-mail-sent-ng');
}
wpcf7ResponseOutput.append(data.message).fadeIn('fast');
}