altis / experiments
Altis 用的 Web 实验框架
Requires
- altis/aws-analytics: ^2.3.1
- markrogoyski/math-php: ^0.51.0
- dev-master
- 2.4.4
- 2.4.3
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.0
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.0
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.1.0
- 1.0.0
- dev-2.4.4--branch
- dev-2.4.3--branch
- dev-2.4.2--branch
- dev-2.4.1--branch
- dev-2.4.0--branch
- dev-2.3.0--branch
- dev-2.2.2--branch
- dev-2.2.1--branch
- dev-2.2.0--branch
- dev-v2-branch
- dev-2.1.0--branch
- dev-2.0.4--branch
- dev-updating-npm-deps
- dev-2.0.3--branch
- dev-2.0.2--branch
- dev-2.0.1--branch
- dev-2.0.0--branch
- dev-1.1.0--branch
- dev-1.0.0--branch
- dev-0.1.0--branch
This package is auto-updated.
Last update: 2024-08-24 18:02:34 UTC
README
Altis 的 Web 实验框架。
功能
该插件目前提供以下内置功能
文章标题 A/B 测试
启用此功能后,您可以直接从文章编辑屏幕创建文章标题的 A/B 测试。
默认启用,但可以使用以下过滤器禁用:
add_filter( 'altis.experiments.features.titles', '__return_false' );
默认支持文章和页面,但您可以使用以下代码在插件或主题的 functions.php
中添加对自定义文章类型的支持:
add_post_type_support( 'events', 'altis.experiments.titles' );
用法
该插件提供了一个程序性 API 来注册针对文章数据的自定义 A/B 测试
register_post_ab_test( string $test_id, array $options )
设置测试。
$test_id
: 测试的唯一 ID。$options
: 测试的配置选项。label <string>
: 人类可读的标签。rest_api_variants_field <string>
: 变体可用的字段名称。rest_api_variants_type <string>
: 变体的数据类型。goal <string>
: 转化目标事件名称,例如 "click" 或 "click:.selector a"。goal_filter <string | callable>
: Elasticsearch bool 查询以筛选目标结果。如果传递了可调用项,则它接收测试 ID 和文章 ID 作为参数。query_filter <string | callable>
: Elasticsearch bool 查询以筛选正在查询的总事件。如果传递了可调用项,则它接收测试 ID 和文章 ID 作为参数。variant_callback <callable>
: 可选的回调,用于根据变体值进行渲染。参数$value <mixed>
: 变体值。$post_id <int>
: 文章 ID。$args <array>
: 传递给output_ab_test_html_for_post()
的可选参数。
winner_callback <callable>
: 可选的回调,用于在找到获胜者时更新文章。默认为 no-op。参数$post_id <int>
: 文章 ID。$value <mixed>
: 获胜的变体值。
post_types <array>
: 支持测试的文章类型数组。
output_ab_test_html_for_post( string $test_id, int $post_id, string $default_content, array $args = [] )
返回客户端处理的 A/B 测试标记。
$test_id
: 测试的唯一 ID。$post_id
: 测试的文章 ID。$default_content
: 不在测试中的用户的默认内容。$args
: 传递给variant_callback
的可选数据数组。
namespace Altis\Experiments; // Register the test. register_post_ab_test( 'featured_images', [ 'rest_api_variants_type' => 'integer', 'goal' => 'click', 'variant_callback' => function ( $attachment_id, $post_id, $args ) { return wp_get_attachment_image( $attachment_id, $args['size'], false, $args['attr'] ); } ] ); // Apply the test by filtering some standard output. add_filter( 'post_thumbnail_html', function ( $html, $post_id, $post_thumbnail_id, $size, $attr ) { return output_ab_test_html_for_post( 'featured_images', $post_id, $html, [ 'size' => $size, 'attr' => $attr, ] ); }, 10, 5 );
目标跟踪
转化目标是确定变体是否成功的方法。这计算为 转化次数 / 展示次数
。
提供了开箱即用的 click
目标处理程序,并将点击事件处理程序添加到最近的 <a>
标签。
范围事件处理
对于渲染更复杂替代 HTML 的测试,您可以使用传递给 element.querySelectorAll()
的 CSS 选择器定义事件目标。
例如,将目标设置为 click:.my-target
将在匹配 .my-target
的变体 HTML 元素被点击时跟踪转化。这适用于所有注册的目标处理程序。
自定义目标处理程序
您可以使用JavaScript自定义目标处理器
Altis.Analytics.Experiments.registerGoal( name <string>, callback <function>, closest <array> )
此函数添加一个目标处理器,其中 name
与注册A/B测试时 $options['goal']
的值相对应
回调函数接收以下参数
element <HTMLElement>
:事件的目标节点。record <function>
:接收目标元素和用于记录转换的回调函数。该函数接受两个可选参数attributes <object>
:与事件一起记录的自定义属性。metrics <object>
:与事件一起记录的自定义指标。
closest
参数允许您确保传递给回调函数的元素是某种类型,通过在DOM树中向上遍历实现,例如,要仅返回锚标签,则传递 [ 'a' ]
。
Altis.Analytics.Experiments.registerGoal( 'scrollIntoView', function ( element, record ) { var listener = function () { // Check element has come into view or not. if ( element.getBoundingClientRect().top > window.innerHeight ) { return; } // Remove event listener immediately. window.removeEventListener( 'scroll', listener ); // Record event. record(); }; // Start listening to scroll events. window.addEventListener( 'scroll', listener ); } );
注意:此JavaScript应通过 wp_enqueue_scripts
动作在 <head>
中排队。
创建您自己的测试
您如何管理变体数据取决于您,例如,您可以使用Fieldmanager或Advanced Custom Fields创建元框以保存变体数据。
注意您应该使用以下函数获取和更新变体
get_ab_test_variants_for_post( string $test_id, int $post_id ) : array
update_ab_test_variants_for_post( string $test_id, int $post_id, array $variants )
路线图
- 多变量测试功能
- 功能
- 特色图像测试
由 Human Made 制作