Elementorを使用してA/Bテストを実行し、ちらつきを抑える方法
WordPressサイトによっては、Elementorプラグインを使用してビューを管理し、Matomo A/Bテストコードをインストールしています。場合によっては、Elementorはコードを<body>
タグを使用すると、ちらつきが発生します。
Elementorでちらつきを抑えるには、以下の方法を試してみてください:
1.オリジナル/コントロールページのカスタムJSコードを用意し、以下の変数を更新する。experimentName
,originalPath
そしてalternativeUrl
をあなたの要求に従って調整します。また、ランダムロジックを希望の値に調整する必要があります。以下の例では、33%ずつの3つの均等配分を使用しています。
<script>
(function () {
var experimentName = 'HomepageCloudCTA';
var originalPath = '/pricing/'; // the originan and control URL. for homepage use '/'
var alternativeUrl = '/alternative-pricing/';// redirect user to this alternative URL
var cookiename = 'MatomoAbTesting';
if (location.host !== 'matomo.org') {
return; // don't run on fr.matomo.org
}
if (location.pathname !== originalPath) {
return; // don't run test on this page
}
function isGroup(v) {
if (navigator.cookieEnabled && navigator.userAgent.indexOf('bot') === -1) {
return document.cookie.indexOf(cookiename + '=' + experimentName + v) !== -1;
}
}
function setGroup(val) {
document.cookie = cookiename + '=' + encodeURIComponent(experimentName + val) + '; expires=' + expiryDate + '; path=/;SameSite=Lax';
}
function track(variation) {
function trackAbTest() {
window._paq = window._paq || [];
window._paq.push(["AbTesting::enter", {experiment: experimentName, variation: variation}]);
}
if ('object' === typeof window && 'object' === typeof window.Matomo && window.Matomo.initialized) {
// tracker is already loaded.
trackAbTest();
} else {
// tracker is not loaded as this point and we need to wait until Matomo is loaded, then we can track it
// if we were to call _paq.push too early we would create an extra tracker which would then cause an extra
// tracker to be created which be unconfigured and would cause extra requests to the wrong endpoints that won't work
if ('object' !== typeof window.matomoPluginAsyncInit) {
window.matomoPluginAsyncInit = [];
}
window.matomoPluginAsyncInit.push(function () {
Matomo.on('MatomoInitialized', trackAbTest);
});
}
}
var expiryDate = new Date();
expiryDate.setTime(expiryDate.getTime() + (20*24*60*60*1000));
expiryDate = expiryDate.toGMTString();
if (isGroup('2')) {
window.location.replace(alternativeUrl);
} else if (isGroup('0')) {
track('original');
} else if (isGroup('1')) {
track('control');
} else if (navigator.cookieEnabled && navigator.userAgent.indexOf('bot') === -1) {
var rand = Math.random();
if (rand >= 0.666) { //Adjust the random logic as per your need
setGroup(2);
window.location.replace(alternativeUrl);
return;
} else if (rand >= 0.333) {
setGroup(1);
track('control');
} else {
setGroup(0);
track('original');
}
}
})();
</script>
2.上記のカスタムコードをElementorスニペットとして追加する。
- ABテストのタイトル名を入力
$nameOfAbTest
例えば、AB Test HomepageCloudCTA。
- 場所は以下の通り。
head
. - Publish “をクリックしてカスタムコードを作成する。
- テストによっては、サイト全体に対して実行されます。特定のページだけをテストする場合は、Singularを選択し、次にテストを実行するページを選択します。例えば、トップページなら Front Page。技術的には、上記のスクリプトは特定のページでのみ実行されるので、サイト全体を選択することもできます。
- 保存して閉じる」をクリックする。
3.ヘッダーにカスタムJSコードが読み込まれているかどうかを確認するために、目的のページに行き、HTMLを検査する。
4.また、ブラウザ開発者ツールを開き、ブラウザ開発者ツールのコンソールにJSエラーがないことを確認する。
5.A/Bテストを正しくトラッキングするために、代替ページを更新する。
- オルタナティブ」のページをご覧ください。
- Elementorで編集」をクリックする。
- HTMLウィジェットを検索する。
- ページ上にドラッグする。
- 以下のスクリプトをelementorウィジェットのHTMLコードセクションに貼り付けます。その
mtmExperimentName
そしてmtmVariationName
変数は、A/Bテストをどのように設定したかによって調整する必要があります。以下の例を参照してください。
<script>
function trackAbTest() {
var mtmExperimentName = "HomepageCloudCTA";
var mtmVariationName = "Try21DayFreeCloudTrial";
window._paq = window._paq || [];
window._paq.push(["AbTesting::enter", {experiment: mtmExperimentName, variation: mtmVariationName}]);
}
if ('object' === typeof window && 'object' === typeof window.Matomo && window.Matomo.initialized) {
// tracker is already loaded.
trackAbTest();
} else {
// tracker is not loaded as this point and we need to wait until Matomo is loaded, then we can track it
// if we were to call _paq.push too early we would create an extra tracker which would then cause an extra
// tracker to be created which be unconfigured and would cause extra requests to the wrong endpoints that won't work
if ('object' !== typeof window.matomoPluginAsyncInit) {
window.matomoPluginAsyncInit = [];
}
window.matomoPluginAsyncInit.push(function () {
Matomo.on('MatomoInitialized', trackAbTest);
});
}
</script>
- 更新」ボタンをクリックする。
- 先ほど保存した代替ページのURLを開き、ブラウザの開発者コンソールでJavaScriptエラーがないことを確認する。
6.キャッシュをクリアする。