altis / ab-tests

此包已被废弃且不再维护。作者建议使用 altis/experiments 包代替。

Altis 的 Web 实验框架

安装: 17

依赖项: 0

建议者: 0

安全: 0

星标: 11

关注者: 19

分支: 0

公开问题: 11

语言:JavaScript

类型:wordpress-plugin


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>:用于在找到获胜者时更新文章的可选回调。默认为无操作。参数
      • $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的测试,您可以使用CSS选择器定义事件目标,并将选择器传递给element.querySelectorAll()

例如,将目标设置为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 );
} );

注意:应通过wp_enqueue_scripts动作将此JavaScript排队到<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用❤️制作