alleyinteractive/wp-experimental-features

WP 实验性功能

v1.3.1 2024-03-01 20:44 UTC

This package is auto-updated.

Last update: 2024-09-15 20:48:14 UTC


README

这是一个WordPress插件,用于在您的主题或插件中创建功能标志系统,以进行beta测试实验性功能。

用法

定义功能标志

功能标志通过过滤器进行定义

/**
 * Define available feature flags.
 *
 * @param array $flags Feature flags that have been defined for the Experimental Features plugin.
 *
 * @return array The modified list of feature flags.
 */
function filter_experimental_features_flags( $flags ): array {
	$flags['my-cool-feature'] = __( 'My Cool Feature', 'my-textdomain' );

	return $flags;
}
add_filter(
	'experimental_features_flags',
	__NAMESPACE__ . '\filter_experimental_features_flags'
);

检查功能标志的值

可以通过运行特征标志别名通过 experimental_features_flag 过滤器来检查功能标志的值。这允许插件和主题在实验性功能插件停用时不会中断,因为过滤器将简单地返回默认值。

$is_enabled = apply_filters(
	'experimental_features_flag',
	false,
	'my-cool-feature'
);

如果标志未启用,或者实验性功能插件未激活,则将返回默认值(第一个参数,在上面的示例中为 false)。

您可以在插件或主题中创建一个辅助函数来完成此操作

/**
 * A helper function for determining if a feature flag is enabled.
 *
 * @param string $slug The feature flag slug to check.
 *
 * @return bool True if enabled, false if not.
 */
function my_theme_flag_enabled( string $slug ): bool {
	return (bool) apply_filters(
		'experimental_features_flag',
		false,
		$slug
	);
}

在管理员界面切换功能标志

如果您以管理员(或具有 manage_options 能力的用户)的身份登录到WordPress管理员界面,导航到设置 > 实验性功能,您可以通过简单的复选框界面打开和关闭功能标志。

在管理员栏切换功能标志

默认情况下,管理员栏将包括切换所有可用功能标志的链接。这可以通过过滤器关闭

add_action( 'experimental_features_show_admin_bar', '__return_false' )

Screen Shot 2021-07-08 at 4 55 08 PM

监听标志更改

当标志启用/禁用时,将触发WordPress操作。

在任何标志更新时

add_action(
	'experimental_features_flags_updated',
	function( $enabled, $disabled ) {
		// ...
	},
	10,
	2,
);

当特定标志启用时

add_action( 'experimental_features_flag_enabled_{feature-flag}', function() { ... } );

当特定标志禁用时

add_action( 'experimental_features_flag_disabled_{feature-flag}', function() { ... } );

在REST API中检索功能标志状态。

可以通过REST API检索功能标志的状态。端点 /wp-json/experimental-features/v1/features 将返回一个包含网站上所有功能标志状态的JSON对象。

{
	"my-cool-feature": {
		"label": "My Cool Feature",
		"status": false
	}
}

默认情况下,这是禁用的。要启用它,请使用以下过滤器

add_filter( 'experimental_features_rest_api_enabled', '__return_true' );

访问REST API端点的默认权限为所有用户。要限制访问,您可以通过过滤权限回调来检索以满足您的需求

add_filter(
	'experimental_features_rest_permission_callback',
	function () {
		return current_user_can( 'manage_options' );
	},
);

默认情况下,所有功能标志都会出现在端点上。这可以通过使用 experimental_features_rest_api_flags 过滤器来过滤

add_filter(
	'experimental_features_rest_api_flags',
	function ( $flags ) {
		return array_filter(
			$flags,
			 function ( $flag ) {
				// Only return the 'my-cool-feature' flag.
				return 'my-cool-feature' === $flag;
			},
			ARRAY_FILTER_USE_KEY
		);
	}
);

变更日志

请参阅 CHANGELOG 了解最近更改的更多信息。

鸣谢

此项目由 Alley Interactive 活跃维护。

许可协议

GNU通用公共许可证(GPL)。请参阅 许可文件 了解更多信息。